c++ - 我应该使用什么条件来停止文件读取循环?

标签 c++ file-io fstream

以下会导致错误,因为 file.eof() 显然不会返回 true 直到读取超过文件末尾。我应该怎么做?

std::ifstream file("something.stuff", std::ios::in|std::ios::binary);

while(!file.eof())
{
    double x, y, z;
    file.read(reinterpret_cast<char*>(&x), sizeof(x));  //  Do I need to check if(file) after every read?
    file.read(reinterpret_cast<char*>(&y), sizeof(y));
    file.read(reinterpret_cast<char*>(&z), sizeof(z));

    // Do something with xyz
}

最佳答案

你可以在所有读取之后检查它,除非你打算用部分数据做一些事情,所以:

while(true)
{
    double x, y, z;
    file.read(reinterpret_cast<char*>(&x), sizeof(x));
    file.read(reinterpret_cast<char*>(&y), sizeof(y));
    file.read(reinterpret_cast<char*>(&z), sizeof(z));

    if (!file)
        break;

    // Do something with xyz
}

关于c++ - 我应该使用什么条件来停止文件读取循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11284615/

相关文章:

c++ - 如何使用 dll 中的 exe 实现的类

c++ - 我无法弄清楚为什么我的代码不起作用 - codeforce - Brain's Photos

C 找不到在不同情况下从文件读取数据的工作算法

c++ - 如何使用 fstream,在 .txt 文件中写入不同的值

c++ - 无法通过 is_open 和正确检查读取文本文件?

c++ - 为什么在写入文件时删除空格无法读取文件?

c++ - 调整属性表的错误

c++ - C++ 宏的可选参数

java - 无法访问 Java 创建的文件——有时

string - 如何检查用户是否在 Go 中输入了空值?