在 VS 2005 中,我有一些如下所示的代码:
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 Express 中失败。据我所知,VS 2008 在代码搜索到文件末尾后没有返回 eof() 。我错过了什么吗?我通过添加显式检查来修复它以查看查找位置是否超过文件大小,但我想确保我正确理解 ifstream。