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

标签 c++ binary fstream

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

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) 不是测试下一次读取是否成功,而是测试上次读取是否成功。

关于c++ - 为什么fstream打印出文件的最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55337451/

相关文章:

c++ - 在 C 中使用 TSS 和 TrouSerS 创建背书 key

c - 二进制文件写入问题

C++ fstream - 如何在 .open() 中添加变量而不是字符串?

C++ ifstream 将读取一些值然后停止

c++ - 从 .txt 文件中提取行,然后将单词存储到单独的数组中 | C++

c++ - 发送输入字符串?

c++ - 未解析的外部符号 "unsigned long gVar"

c++ - 为什么在 header 的命名空间内定义的自由函数会导致 VS 2013 中出现 "multiple defined"错误?

python - 不确定如何从二进制文件中解压缩/读取结果

使用 STL 算法与容器(char * 除外)进行 C++ 二进制文件 I/O