Problem mit fstream
-
Die ganze Geschichte ist etwas peinlich, weil sie so einfach klingt.
Ich möchte eine Datei im Binär-Modus sowohl fürs Lesen, als auch fürs Schreiben öffnen. Die Inhalte sollen alle erhalten bleiben, und falls die Datei noch nicht existiert, soll sie angelegt werden. Der letzte Fall macht jetzt aber Probleme. Und zwar kann der Stream partout nicht geöffnet werden, wenn die Datei noch nicht existiert, aber dahingegen problemlos, wenn sie existiert. Nach dem, was ich über die verschiedenen Modes verstanden habe, scheinen sich hier das Erhalten der existierenden Daten und das eventuelle Neuanlegen der Datei irgendwie zu widersprechen. Hier ist die Anweisung:
fstream stream("C:\\test.txt", ios::in | ios::out | ios::binary);Gibt es da eine Lösung, oder muss ich zwangsweise vorher schauen, ob die Datei existiert, und dann eine Fallunterscheidung machen?
-
David Schneider schrieb:
...
Gibt es da eine Lösung, oder muss ich zwangsweise vorher schauen, ob die Datei existiert, und dann eine Fallunterscheidung machen?Frage und Lösung in einem Satz...
Du musst erst prüfen ob sie vorhanden ist, wenn ja bloß öffnen, wenn nein erst erstellen, dann öffnen.MfG SWW13
-
Naja, hätte ja sein können, dass eine bestimmte Kombination von Flags vielleicht zum Erfolg führt. Immerhin heißt das ja, dass mit der Verallgemeinerung auf Lesen und Schreiben mit dem selben Stream irgendwie die automatische Dateierzeugung wegfällt, die es meines Wissens bei einem ofstream ja noch gibt.
Na, was solls. Jetzt habe ich ja meine Antwort.