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

问题描述 投票:0回答:1

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

while( (inFile)
{
    inFile.read(reinterpret_cast <char*> (&acc), sizeof(acc));  
    display(acc);
}
c++ binary fstream
1个回答
2
投票

因为您的代码应该阅读

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

您的版本仅在打印失败的读取后测试失败。或者换句话说while (infile)不是下一次读取会成功的测试,它是最后一次读取成功的测试。

© www.soinside.com 2019 - 2024. All rights reserved.