當使用文件作為輸入流時,為了確保適時的結束文件讀取操作,程序要靠檢查文件尾來判斷該何時停止讀取。
常用的檢查文件尾方法有兩種:
兩種方式均已將 fin 與文件關聯,即 均已聲明 fin 輸入流,並已調用 open 成員函數打開了文件。
第一種:
該方式可以要求程序從文件中連續讀取數字,直到沒有更多的數字可供讀取為止。代碼如下:
1 int next; 2 while(fin >> next){ 3 //用戶代碼 4 }
第二種:
該方式利用每個輸入文件流都有的 eof 成員函數來判斷何時讀完文件的全部內容。代碼如下:
1 int number; 2 fin.get(number); 3 while( !fin.eof() ){ 4 //用戶代碼 5 fin.get(number); 6 }
當 eof 函數檢測到文件尾,會返回 真,否則返回 假。
注意,用該種方式必須保證要讀取文件結尾之后,eof 函數才會反應。這就是為何本段代碼 while 中用 fin.get(number);結尾的原因。
以上兩種檢測文件結尾在多數情況均可使用,但最好遵循以下原則:
將輸入作為文本處理並用 get 成員函數讀取時,用 eof 成員函數方式。
處理數值數據時,用第一種方式。