ファイル入力操作に fstream を使用すると、多くの場合、ストリームの状態のチェックが必要になります。読書をいつやめるかを決定します。ただし、特定の状態フラグを使用すると、最後の行が 2 回読み取られるなど、予期しない問題が発生する可能性があります。この記事では、根本的な原因を調査し、この問題を回避するための解決策を提供します。
最後の行が 2 回読み取られる理由
この問題は、good() または ! を使用するときに発生します。 getline() を使用してファイルから行を読み取る while ループ内の eof() 条件。これが起こる理由は次のとおりです:
修正: getline() を使用してください。行の読み取りが成功したかどうかを確認するための戻り値:
while (getline(stream, line)) { // Use line here. }
修正: getline() オペレーションが正しいかどうかを確認してください。 EOF をチェックする前に成功しました:
if (getline(stream, line)) { // Use line here. } else if (stream.eof()) { // Handle end-of-file condition. } else { // Handle error condition. }
ベスト実践方法
これらの問題を回避し、ファイル行を効率的に処理するには、次の点を考慮してください。
if (stream >> foo >> bar) { // Use foo and bar here. } else { // Handle error condition. }
for (string line; getline(stream, line);) { // Use line here. }
これらのガイドラインに従うことで、最後の行を意図せずに 2 回読み込むことを回避し、信頼性の高いファイル入力処理を保証できます。 fstream.
以上がC で `fstream` を使用するときに最後の行を 2 回読み取らないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。