Datei zum schreiben öffnen und den Dateizeiger auf das x. Zeiche setzen
-
Im grunde ganz einfach, aber ich finde gerade nirgends wie es geht
Ich möchte eine Datei zum Anhängen öffnen und den Filepointer nicht auf das Ende
sondern an eine Stelle mitten in der Datei setzen, an das Ende kann ich ihn ja mit
ios::ate setzen, aber wie kann ich ihn auf das 37.Byte setzen?
-
Siehe C++ FAQ Beispiel 2 mit Seekg und Seekp.
-
So funktioniert das nicht, habe ich bereits getestet:
std::ofstream outfile ("time.txt", std::ios::app); outfile.seekp (37, std::ios::beg); outfile << "\tUptime " << up.getTime () << std::endl;
schreibt trotzdem immer an das Ende
-
SirLant schrieb:
So funktioniert das nicht, habe ich bereits getestet:
std::ofstream outfile ("time.txt", std::ios::app); outfile.seekp (37, std::ios::beg); outfile << "\tUptime " << up.getTime () << std::endl;
schreibt trotzdem immer an das Ende
Du öffnest den Stream mit ios::app, also werden Daten am Ende angefügt. Könnte es sein, dass er darum das ändern der Position des Schreibzeigers ignoriert
-
Hallo,
C Newbie schrieb:
Du öffnest den Stream mit ios::app, also werden Daten am Ende angefügt. Könnte es sein, dass er darum das ändern der Position des Schreibzeigers ignoriert
ja, das ist das eigentliche Problem, denn:
ios::app The function performs a seek to the end of file. When new bytes are written to the file, they are always appended to the end, even if the position is moved with the ostream::seekp function.
MfG
-
Ok,
dann haben wir also das Problem gefunden, nun wie kann ich die Datei öffnen ohne,
dass sie gelöscht wird und eine neue erstellt wird?Edit:
Habe eben das Flag _Nocreate gefunden(Damit gehts), ist das auch im Standard enthalten, oder eine
Erweiterung von VC++ ?
-
ios::nocreate ist kein Standard, versuche es mit std::ios::ate
MfG
-
Wie man ios::nocreate umgehen kann, ist ebenfalls in den FaQ (zweite Seite, Dateien und Ströme oder so) zu finden...
-
Stimmt steht ganz unten, habe ich übersehen beim überfliegen.