fstream Problem: ios::in und ios::out nicht gleichzeitig möglich ?
-
Hallo zusammen ...
Für ein kleines Projekt soll durch ein C++-Programm eine Datei eingelesen werden und später durch weitere Daten ergänzt werden. Die Datei muss also zum lesen und schreiben geöffnet werden. Ganz einfach hab ich mir gedacht...
#include <iostream> #include <fstream> using namespace std; int main() { fstream file; file.open("C:/test.txt",ios::out|ios::in); file.write("Test",sizeof("Test")); file.close(); return 0; }Es passiert aber nicht. Es wird keine Datei erstellt!
Daraushin hab ich einfach mal "ios::in" raus genommen ("file.open("C:/test.txt",ios::out);") und siehe da...
Die Datei wird erstellt.Was mache ich bei so einfachen Programm falsch?
Ich benutze VS 2008 Express.Danke für euere Hilfe

-
vllt mal mit C:\\test.txt versuchen?
-
Mandel schrieb:
..
Es passiert aber nicht. Es wird keine Datei erstellt!
Daraushin hab ich einfach mal "ios::in" raus genommen ("file.open("C:/test.txt",ios::out);") und siehe da...
Die Datei wird erstellt.Das ist relativ profan - im Konstruktor von fstream wird letztlich _wfsopen (bzw. _fsopen) aufgerufen. Dabei wird ios::out in "w" und ios::out|ios::in in "r+" umgesetzt und falls letzteres geschieht wird das nicht vorhandene File nicht erzeugt (s. Hilfetext).
-
Warum machst du nicht alles nacheinander, in etwa so:
file.open("C:/test.txt", ios::out); ... file.close(); file.open("C:/test.txt", ios::in); ... file.close();Wenn du oft lesen und schreiben musst, kannst ja eine for schleife einbinden.
-
Sieh einfach mal nach, wie die ios::in und ios::out im open zu setzen sind. Aber das macht nur das korrekte Öffnen der Datei. Für das gleichzeitige Lesen und Schreiben brauchst du dann noch einiges mehr.
-
@Werner Salomon
Vielen Dank für die Antwort!
Ich hab mir halt eingebildet, schon in einigen Tutorials gesehen zu haben, dass ios::in und ios::out zusammen übergeben wurden.@AndyK.
So mach ichs jetzt. Dachte nur, dass es ne elegantere Lösung gibt