以下会导致错误,因为 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/