Datei einlesen! eof
-
Hi, danke für eure hilfe zuerst!!
Hab aber noch eine kleine frage!
Ich will eine bestimmte anzahl von zahlen aus einer datei einlesendas mach ich solange bis das ende der datei erreicht ist! jedoch mit
while (!testfile.eof()){ ..}
liest er mir in die liste auch noch nach dem letzten element eine 0 (NULL) ein!
was kann ich machen?? sag danke!
aja falls ihr sonst noch wichtige dinge für den umgang mit datein hättet wäre ich
auch dankbar
MFG johann
-
eof wird *nach* dem Zugriff, der über das Ende der Datei hinauslesen würde, gesetzt.
-
aja falls ihr sonst noch wichtige dinge für den umgang mit datein hättet wäre ich
auch dankbarSchon die FAQs gelesen?
das mach ich solange bis das ende der datei erreicht ist! jedoch mit
while (!testfile.eof()){ ..}
Sehr beliebter Fehler. Das eof-bit wird erst gesetzt *nachdem* eof gelesen wurde. Eine solche Schleifenbindung führt also dazu, dass du zu weit liest.
Richtig ist sowas:
int i; while (testfile >> i) {...}
oder auch:
char i; while (testfile.get(ch)) {...}
oder:
string s; while (getline(testfile, s)) {...}
Ich bevorzuge hier in der Regel aber eine for-Schleife:
for (string s; getline(testfile, s);) {...}
-
oder du nutzt weiterhin die eof()-Funktion und machst das so:
testfile >> strBuffer; // erste Zeile auslesen while (!testfile.eof()) { // ...hier die Zeile verarbeiten... testfile >> strBuffer; // ...und erst jetzt die nächste Zeile lesen }
So hab ich das bisher immer gemacht. Allerdings geb ich zu, dass das nur anwendbar ist, wenn du weißt, dass zumindest eine auswertbare Zeile in der Datei ist, sonst gibt's beim ersten Lesen vor der Schleife einen Fehler
Mfg, smasher1985