bool ios::eof () const;
據庫的,EOF在C++中的IStream
如果eofbit流的誤差標誌已經由 先前I/O操作中設置的函數返回true。當在與流關聯的序列 中達到文件結束時,此標誌由所有標準 輸入操作設置。
我寫了一個程序來運行一些測試:
int main(int argc, char *argv[])
{
ifstream ifs(argv[1]);
float f;
ifs >> f;
cout << ifs.eof() << endl; //check if eofbit set
ifs.close();
}
我測試了2個文件,testcase1.txt和testcase2.txt。與cat
終端生成
testcase1.txt,一個[Ctrl-d]被用來結束輸入:在vim
產生
[~/C++ $] cat > testcase1.txt
1.234[Ctrl-D]
testcase2.txt,我打開了vim
和剛剛輸入1.234
,然後保存並退出。
測試結果
測試與testcase1.txt
結果是1
,這意味着eofbit
被設置,
[~/C++ $] ./a.out testcase1.txt
1
與testcase2.txt
測試結果是0
,
[~/C++ $] ./a.out testcase2.txt
0
我打開兩個testcase1.txt
和testcase2.txt
在vim
,他們看起來完全一樣,那麼爲什麼eofbit
沒有設置爲testcase2.txt
?
難道說VIM附加一個換行符? – 2012-01-11 07:38:13
@Alcott:他們可能看起來一樣,但略有不同。你可以用一個十六進制編輯器來檢查它們的內容是否完全相同......它們可能不是。 – 2012-01-11 07:39:31
@BjörnPollex,我在'vim'中打開這兩個文件,它們都是一行,看起來不像'newline'或'whitespace',只是'1.234'。 – Alcott 2012-01-11 07:44:06