Ersteinmal schonmal vielen Dank für die Hilfe.
>Das Programm meldete einen Fehler. Aha. Dein Programm oder der Compiler?
>Und --verflucht nochmal-- welchen Fehler?!
>Jedenfalls nicht das obige Programm, weil es so gar nicht kompilierbar
>ist.
Das Programm wurde erfolgreich kompiliert.
Der Rückgabewert von datei war aber 0.
Die Aussage, dass das Program einen Fehler meldet war nicht sehr
ausführlich sorry.
Ich habe nun folgendes Programm erstellt:
1 | ifstream datei;
|
2 | datei.open("C:\\Users\\Benutzername\\Desktop\\fstream\\Daten2.txt", ios::binary);
|
3 | if(datei)
|
4 | {
|
5 | datei.seekg( 0, ios::end );//Sprung ans Ende
|
6 | long pos = datei.tellg();
|
7 | datei.close();
|
8 | }
|
9 | else
|
10 | {
|
11 | cout << "Zugriff auf Datei gescheitert";
|
12 | }
|
Hier klappt alles wie es soll.
Wenn ich nun ifstream durch fstream ersetzt und ios:in ergänze klappt
auch noch alles.
1 | fstream datei;
|
2 | datei.open("C:\\Users\\Benutzername\\Desktop\\fstream\\Daten2.txt", ios::binary|ios:in);
|
3 | if(datei)
|
4 | {
|
5 | datei.seekg( 0, ios::end );//Sprung ans Ende
|
6 | long pos = datei.tellg();
|
7 | datei.close();
|
8 | }
|
9 | else
|
10 | {
|
11 | cout << "Zugriff auf Datei gescheitert";
|
12 | }
|
Wenn ich eine Datei komplett neu erstelle (ios::out) kann ich auch mit
seekp() die Schreibposition ermitteln.
Ich hatte aber eigendlich gehofft, dass ich mit fstream (istream +
ostream) eine Datei öffnen kann und dann schreiben und gleichzeitig
lesen kann.
Also z.B.
-verbinden mit vorhandener Datei
-Daten in einer bestimmten Position einlesen
-Daten in einer bestimmten Position schreiben
Wenn ich das richtig verstanden habe muss ich ios::in angeben wenn ich
eine Datei lesen möchte. ios::out zum schreiben (hierbei wird die alte
Datei gelöscht). ios::binary muss ich immer angeben, da ich eine
Binärdatei verwende. Ich hatte jetzt gehofft, dass ich ios::ate
verwenden kann um dann zu schreiben und zu lesen oder muss ich jedes mal
eine neue Verbindung zur Datei herstellen, wenn ich vom lesen zum
schreiben wechseln möchte?
Ich habe auch das Problem, dass ich keine Datei verändern kann.
Verwende ich ios::binary|ios::ate bekomme ich als Rückgabewert von datei
eine 0.