2012-05-04 12 views
2

私は、ファイルを解析するいくつかの問題を抱えているのstd :: fstreamのエラー

私が解析したいファイルの最後の2行は次のとおりです。

F 814/866/896/1100 1035/

:989 817/965/898

[何も、\ nから効果]は

これは私がファイルを読む方法はありません

しかし、私は何も含まれていないファイルの最後の行にいくつかの問題があります。 ファイルの最後の行の前にinFile.ignore(1000, '\n');が発生し、std::fstream::eof()が検出されると予想されますが、何らかの理由でそうではありません。 明らかに、sCommandは、私に何か問題を与えている行に何もない場合、前の行と同じコマンドになります。

これを確認する方法はありますか?そしてもしそうなら、どうですか?

+1

可能な複製:http://stackoverflow.com/questions/21647/reading-from-text-file-until-eof-repeats-last-line要するに、eof()は、ストリームで読むことは何も残っていません。あなたが実際に最後を過ぎて読むことを試みるときだけ、それは真を返すでしょう。これはあなたが*最初に*を読み込み、それが成功したかどうかを確認し、読み込まれた値でのみそれを行う必要があることを意味します。 'while'条件で読み込み操作を行います:' while(inFile >> sCommand){... ' – jrok

+0

これも読むhttp://www.parashift.com/c++-faq-lite/input-output.html# faq-15.4とhttp://www.parashift.com/c++-faq-lite/input-output.html#faq-15.5 – jrok

答えて

1

実際には回答ではありませんが、コメント(私はコメントする方法はわかりません)。最後の行の後にeofの2つの\nがある場合、トリガーされません。私は.eof()を使って同様の問題を抱えていたし、あなたが読むことの内容を読み続けるための条件としてチェックする方が良いかもしれない。

+0

*コメントを追加するには:*現在のページで「コメントを追加」を検索するだけです。 1回目のヒットとなります。 –

+1

評判の低い@KingsIndianユーザーはコメントできません。 – ulidtko

+0

ああ、はい!コメントするには50人の担当者が必要です。 –

関連する問題