2010-12-10 49 views
2

some_file.good()在從文件中讀取最後一個條目後,或在嘗試讀取超出該值後,是否返回false?也就是說,我應該寫什麼時候停止從文件讀取?

while (input.good()) 
{ 
    getline(input, line); 
    // ...process 
} 

getline(input, line); 
while (input.good()) 
{ 
    // ...process 
    getline(input, line); 
} 

回答

9

嘗試讀取超出了......

你可以嘗試:

while(getline(input, line)) 
{ 
// do stuff with line 
} 

要補充,該流實現operator!,檢查標誌,你通常會。從getline返回的是輸入流,但由於操作員,標誌被檢查。

+1

+1,那就是它的正常進行。 – Puppy 2010-12-10 12:47:29

+0

啊,不知道'getline'將輸入流回顯給調用者。在這種情況下,爲了便於閱讀,我認爲我會用'while(getline(input,line).good())'。 – fredoverflow 2010-12-10 12:48:13

+1

實際上,這是相當習慣的,所以你不會需要它的可讀性。 'while(stream >> item)'也是慣用的(但不適用於開箱即用的線路)) – etarion 2010-12-10 13:00:07

0

如前所述,getline在沒有更多行時返回零。此外,如果EOF標誌設置(即在流到達文件末尾)eof()方法返回true:

if(input.eof()) 
{ 
// end of file 
} 
+1

'getline'不會返回零。它返回輸入流。 – fredoverflow 2010-12-10 12:53:24