Dav*_*vid 2 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
}
Run Code Online (Sandbox Code Playgroud)
您可以在所有读取后检查它,除非您打算对部分数据执行某些操作,因此:
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
}
Run Code Online (Sandbox Code Playgroud)