fstream datei( "tucholsk.txt", ios::in | ios::app );
die Datei "tuchols.txt" zum Lesen (ios::in
) und gleichzeitig
zum Anhängen von Daten an die Datei (ios::app
) geöffnet.
Und gerade
bei letzterem findet sich auch unser Fehler: wird eine Datei zum Anhängen
geöffnet, so wird ans Dateiende positioniert! Und damit wird unser Versuch des
Einlesen eines
Characters natürlich nicht mehr glücken, da wir uns ja bereits am Dateiende
befinden.
Ziel muß es daher sein, an den Dateianfang zu positionieren.
Dies gelingt durch ein Einfügen der Zeile
datei.seekg( 0, ios::beg );
unmittelbar vor die while-Schleife. Damit wird, relativ zum Dateianfang, an die Stelle 0 positioniert, d.h. genau an den Dateianfang.
Lassen wir das leicht modifizierte Programm laufen, so erhalten wir als Ausgabe
Ankunft
Gesamtanzahl Bytes in der Datei: [8]
d.h. es wurde nur die erste Zeile unseres Textes eingelesen.