【发布时间】:2019-03-25 12:07:27
【问题描述】:
为什么二进制文件的最后一条记录被打印了两次?
while( (inFile)
{
inFile.read(reinterpret_cast <char*> (&acc), sizeof(acc));
display(acc);
}
【问题讨论】:
-
你正在显示结果,忽略读取成功。
为什么二进制文件的最后一条记录被打印了两次?
while( (inFile)
{
inFile.read(reinterpret_cast <char*> (&acc), sizeof(acc));
display(acc);
}
【问题讨论】:
因为您的代码应该读取
while (inFile.read(reinterpret_cast<char*>(&acc), sizeof(acc))
{
display(acc);
}
您的版本仅在您打印失败的读取之后测试失败。或者换一种说法,while (infile) 不是测试下一次读取是否成功,而是测试最后一次读取是否成功。
【讨论】: