ifstream で Seekg を使用して有効な位置を維持する
質問
ファイル解析をより堅牢にしようとしています。ifstream を使用すると、どうすれば確実に seekg
ファイル内の有効な位置に保持されますか?
これは動作しません:
while(m_File.good() && m_File.peek() != EOF)
{ ...a seekg operation moves file position past end of file... }
現在のイテレータが終了イテレータをはるかに超えてプッシュされているため、peek() が true になることはないと思います。
解決
いいえ、ファイルの最後のオフセットとあなたは未定義の動作を引き起こす、それを超えて求めていないことを確認すること見つけるの短いこれを行う方法は、ありません - あなたはもちろんのことで、ファイルのサイズを増やすことができます書き込みます。
他のヒント
悪い位置に到達したときのエラーの場合 (例:それは起こらないはずです)を設定してみてもよいでしょう ストリーム例外マスク, を実行し、while ループの外側で適切な例外をキャッチします。その場合、それが「最もクリーンな」解決策になります。
所属していません StackOverflow