質問

ファイル解析をより堅牢にしようとしています。ifstream を使用すると、どうすれば確実に seekg ファイル内の有効な位置に保持されますか?

これは動作しません:

while(m_File.good() && m_File.peek() != EOF)
{ ...a seekg operation moves file position past end of file... }

現在のイテレータが終了イテレータをはるかに超えてプッシュされているため、peek() が true になることはないと思います。

役に立ちましたか?

解決

いいえ、ファイルの最後のオフセットとあなたは未定義の動作を引き起こす、それを超えて求めていないことを確認すること見つけるの短いこれを行う方法は、ありません - あなたはもちろんのことで、ファイルのサイズを増やすことができます書き込みます。

他のヒント

悪い位置に到達したときのエラーの場合 (例:それは起こらないはずです)を設定してみてもよいでしょう ストリーム例外マスク, を実行し、while ループの外側で適切な例外をキャッチします。その場合、それが「最もクリーンな」解決策になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top