作者Nestarneal (涅斯)
看板C_and_CPP
標題[問題] C++ eof
時間Fri Jun 24 14:10:29 2011
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C++
問題(Question):
我的檔案中有以下資料:『
a 0
e 3』
CODE為:
while(!fin.eof())
{
fin >> tmp1;
fin >> tmp2;
cout << tmp1 << endl;
}
輸出結果為:
a
e
a 0
我用 /eof 有搜尋到一篇文章,內容大致上是說:
eof在讀取時才會判斷有沒有到檔尾,
所以在讀完e跟3以後還會再繼續一次while,
但是這次進入while遇到fin時,程式就會發現已經到檔尾,
所以就不會有再下一次的while。
如果照上面的說法,那輸入結果應該是:
a
e
e
才對,但卻不是如此。
我最大問題點在於那個0,
在先前讀檔案的時候,0應該是被放入tmp2,
而我輸出只有tmp1,所以不管怎樣都不該出現0。
所以我想會不會是我對於eof的理解有所出入,
上面對於eof的用法還有需要更正的地方呢?
麻煩各位解答一下囉,謝謝。
------補充問題-------
我剛剛把其他跟檔案IO無關的CODE做了一些修改,
結果卻能夠正常顯示結果了...
不過還是想請問我對於eof的觀念哪裡需要更正。
因為無論是之前錯誤的情況,還是現在莫名變成正確的情況,
跟我對於eof的瞭解都還是有出入。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.61.196
※ 編輯: Nestarneal 來自: 114.33.61.196 (06/24 14:31)
推 tropical72:你說對了,eof 意義看這篇:#1DEjbRVi,下面這份寫得很棒 06/24 14:42
→ tropical72:補一下,"你說對了"指的是 "對於eof的瞭解都還是有出入" 06/24 14:44
推 loveme00835:= =" 06/24 14:50
→ angleevil:若林源三好帥 06/24 15:24
→ Nestarneal:瞭解囉,謝謝 :) 06/24 17:42