2013-03-30 16 views
5

Seekg scheint nicht zu funktionieren, wenn ich EOF in myFile erreiche.Warum seekg nicht mit getline funktioniert?

ifstream myFile("/path/file"); 
for(int i; i < 10; i++){ 
    myFile.seekg(0);//reset position in myFile 
    while(getline(myFile, line)){ 
     doSomething 
    } 
} 

So, jetzt ist Eingangsstrom am Öffnen jede Schleife:

for(int i; i < 10; i++){ 
    ifstream myFile("/path/file");//reset position in myFile 
    while(getline(myFile, line)){ 
     doSomething 
    } 
} 

Aber ich würde eher versuchen, in Stellung 0 Wie kann ich das erreichen?

+0

möglich duplicate von [seekg() Funktion schlägt fehl] (http://stackoverflow.com/questions/11264764/seekg-function-fails) – amo

Antwort

10

Achten Sie darauf, die Fehler-Flags vor dem Aufruf von myFile.seekg() löschen:

myFile.clear(); 

Nach dem EOF-Flag ben gesetzt hat, werden Sie nicht in der Lage sein, etwas zu extrahieren. Sie müssen diese Markierungen löschen, um erneut extrahieren zu können.

+0

Es funktioniert, danke. – rluks