Frage zu ios::binary



  • Resultierend aus meinem letzten Thread: http://www.c-plusplus.net/forum/p2204743#2204743

    Ich öffne eine Datei im Binärmodus und diese Datei bleibt die ganze Zeit geöffnet. Das Programm startet keine Threads.

    m_file.open("test.txt", ios::binary);
    

    Jetzt wird aber in den Ausgabestreams irgendetwas vermischt. Z.B. wird aus

    std::cerr<<"Kombiniert " <<"("<<kombiniert<<")"<<std::endl;
    

    folgende Ausgabe:

    )ombiniert (datafiles\file00384.dat
    

    Versuche ich mit weiteren Funktionen anderer Bibliotheken *.dat Dateien anschließend zu lesen, sagen mir diese Funktionen, dass die Dateien nicht gefunden werden können (obwohl die Pfade stimmen!).

    Ich vermute, dass liegt irgendwie an den Streams und dem ursprünglichen "ios::binary". Öffne ich die Datei nämlich nicht im Binärmodus, sind alle Ausgaben korrekt und weitere Dateien können eingelesen werden 😕 😕 😕 Und ja, ich habe auch schonmal alles komplett neu kompiliert.

    Muss ich bei ios::binary eine Datei vollständig einladen, verarbeiten und schließen, bevor ich andere Dateien öffnen darf?



  • Du öffnest eine Datei und das hat Einfluss auf std::cerr? oO



  • cooky451 schrieb:

    Du öffnest eine Datei und das hat Einfluss auf std::cerr? oO

    Ja, ich weiß, das klingt alles ganz komisch! Das binäre Öffnen hat auch einfluss auf die Methoden "bibliothek::readDataFile()", vermutlich weil da logischerweise auch intern mit streams gelesen wird.

    Ich raff das auch nicht. Immerhin konnte ich nach 2 Stunden herausfinden, wie ich das Problem umgehen kann (datei normal öffnen).

    Wie gesagt, keine Threads, alles neukompiliert.



  • Was ist das für eine Bibliothek? Kannst du ein Minimalbeispiel erstellen? Hört sich ziemlich eigenartig an.



  • m_file.close();
    Datei mit der Funktion aus deiner Bibliothek öffnen.

    Vielleicht gehts ja dann.


Anmelden zum Antworten