C++ファイルストリームを使用してテキストファイルを解析するときに奇妙な問題が発生しました。コードは次のとおりです。
while (true)
{
std::getline(inFile, line);
if (!inFile.good())
{
std::cout << "Fail, bad and eof flags:" << inFile.fail() << inFile.bad() << inFile.eof() << std::endl;
break;
}
parseLine(line);
}
読み取りが終了すると、出力は次のようになります。
Fail, bad and eof flags:001
しかし、実際には、リーダーはファイルの終わりに到達しません。ファイルを開くと、次の文字が実際には26(ASCIIコード)であることがわかります。次に、問題は次のとおりです。1)この文字を読み取るときにeofフラグが設定される理由と、この種の誤った終了を回避する方法は?および2)この状態から回復する方法は?ありがとう!
PS:返信に感謝します。バイナリモードでファイルを読み取った場合はどうなりますか?より良い解決策はありますか?Windowsプラットフォームを使用していますが、ファイルはUNIXファイルのようです。