以下原因會導致錯誤,因爲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
}
這是乾淨多了,感謝 – David
只是爲了確認之前,每一個成功的,它不會造成任何傷害,保持閱讀'(!文件)'返回true,右後? – David
@Dave:這是正確的。無害。 'read()'將檢查流是否處於良好狀態(不是eof,fail或bad),如果不是,那麼它會設置'failbit'。所以最糟糕的事情將會發生的是它會做到比必要的多兩倍。 –