C++ - Dateioperationen: Daten am Ende einfügen
-
Hallo,
ich habe ein kleines Problem mit den Dateioperationen.
Ich habe eine Datei, dort soll am Ende etwas hinzugefügt werden.In der Datei steht zum Beispiel:
asd dfs dfwenn ich dann das programm öffne, soll das programm noch etwas DANACH einfügen.
zb blubb, dass in der datei dann steht:asd dfs df blubbdafür habe ich folgenden Code benutzt:
#include <fstream> fstream datei; datei.open("Text.txt", ios_base::ate | ios_base::out); datei << "blubb" << endl; datei.close();trotz ate wird der Inhalt jedesmal überschrieben.
was mache ich falsch?
-
Ich habe es jetzt so gelöst, es geht:
std::fstream datei; datei.open("Text.txt", std::ios_base::out | std::ios_base::app); datei.seekg(0, std::ios_base::end);
-
Das
ios_base::ate("at the end") hat erstmal keine Auswirkung darauf, wie das File geöffnet wird. Wenn das File dann allerdings offen ist, wird an's Ende positioniert.
Bleibt also vom openmode noch das bitios_base::outübrig, und siehe da:ios_base::outhat den gleichen Effekt wie"w"beimfopen()aus C: "truncate to zero length".Was also passiert: das File wid beim oeffnen auf 0 bytes abgelängt und danach an's Ende positioniert.
Nimm
ios_base::out | ios_base::appund benutz den Entsprechenden C'tor anstatt des membersopen().