在VS 2005,我有一些代碼,看起來像這樣:ifstream seekg超越最終不會在VS 2008 Express中返回eof?
ifs.open("foo");
while (!ifs.eof())
{
ifs.read(&bar,sizeof(bar));
loc = ifs.tellg();
loc += bar.dwHeaderSize;
// four byte boundary padding
if ((loc % 4) != 0)
loc += 4 - (loc % 4);
ifs.seekg(loc,ios::beg);
}
ifs.close();
的代碼在VS 2005中工作得很好,但在VS 2008中快速失敗。從我所知道的來看,VS 2008在代碼追尋到文件末尾後沒有返回eof()。我錯過了什麼嗎?我通過添加一個明確的檢查來確定它是否超出了文件大小,但我想確保我理解ifstream是否正確。