我正在編寫一個程序來掃描一個文件,並在這樣做時會調用seekg()。它在一個循環中旋轉,條件是!infile.eof();所以它應該在到達文件末尾時退出循環。但是,由於某種原因它卡住了。我懷疑這可能是因爲它在seekg()中到達文件的末尾。換句話說,如果我是從文件末尾開始的50個字節,我調用seekg()並告訴它將指針移動100個字節,可能會導致它卡住(在seekg()或之後)。那麼,當要求將指針移動到文件末尾時,seekg()實際上會做什麼?當它到達文件末尾時,istream :: seekg()會做什麼?
預先感謝您。
您確定您的期望和使用'eof'是否正確?你確定你的代碼和邏輯的其餘部分是正確的嗎?這就是爲什麼包含這種類型的問題需要[mcve] ..我建議你訪問[幫助中心](http://stackoverflow.com/help)並查看部分[我如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)。 –
您只能在嘗試閱讀某些內容後使用'infile.eof()'。它會告訴你上一次讀取是否失敗,因爲你在文件末尾。 – Barmar
請參閱http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong – Barmar