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 df
wenn ich dann das programm öffne, soll das programm noch etwas DANACH einfügen.
zb blubb, dass in der datei dann steht:asd dfs df blubb
dafü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::out
hat 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::app
und benutz den Entsprechenden C'tor anstatt des membersopen().