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