为什么fstream打印出文件的最后一条记录

时间:2019-03-25 12:07:27

标签: c++ binary fstream

为什么二进制文件的最后一条记录被打印两次?

while( (inFile)
{
    inFile.read(reinterpret_cast <char*> (&acc), sizeof(acc));  
    display(acc);
}

1 个答案:

答案 0 :(得分:2)

因为您的代码应阅读

while (inFile.read(reinterpret_cast<char*>(&acc), sizeof(acc))
{
    display(acc);
}

您的版本仅在打印出失败的内容后进行测试。或者换一种说法,while (infile)并不是下一次读取成功的测试,而是上一次读取成功的测试。