ofstream ohne overwrite



  • Hallo liebes C++-Forum 🙂

    Ich versuche in einer .dll eine Textdatei zu erstellen. Diese Textdatei soll durch verschiedene Threads bearbeitet werden.
    Hauptsächliches Problem ist ein Overwrite des Files, wobei ich nicht ganz verstehe, wieso dies passiert.

    Mein bisheriger Quellcode:

    ofstream rfile(GetDirectoryFile("bla.txt"), ios::app);
    rfile << get_time() << "test" << endl;
    

    Soweit ich weiß öffnet man durch ios::app nur, aber es sollte kein Overwrite erfolgen?

    Vielen Dank!



  • ofstream öffnet immer zum schreiben!

    ios::app bedeutet, dass du etwas ans Ende der Datei anhängen möchtest...



  • Schon klar, aber wenn ich etwas am Ende der Datei anhängen möchte, wieso wird dann trotzdem der eigentliche Inhalt gelöscht?



  • Verschiedene Threads greifen gleichzeitig auf eine Datei im Schreibmodus zu, hört sich nicht gesund an. Und erklärt das Problem.



  • App heißt nur, dass der die aktuelle Schreibzugriffsposition auf das Ende der Datei zeigt. Kommt jetzt ein anderer Thread und schreibt was dahinter, behält der aktuelle Thread natürlich seine Schreibzugriffsposition bei. Wie ofstream schon sagte, solltest du den Zugriff von mehreren Threads natürlich generell vermeiden.


Anmelden zum Antworten