在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是否正确。