イテレータを使用してテキスト ファイルを反復処理しようとしています。
1) std::istream_iterator<MyData> itRecordStreamBegin(fileStream);
2) std::istream_iterator<MyData> itRecordStreamEnd;
最初の行の後、ファイルからいくつかのデータを読み取ります (MyData 型に演算子 >> を使用します)。予想通り。
残念ながら、その後メモリ消費量が増加し、istream_iterator
ファイル全体をメモリにロードしようとしたようです。数秒後 (out_of_memory 例外がスローされた場合)、デバッガーは 2 行目に移動します。しかし、ファイルの読み取りに失敗し、それ以上何も読み取れません。
質問:
istream_iterator
これは(ファイルをメモリにロードするための) 正しい動作ですか?
小さなファイル (20MB など) の場合、これは観察されません。
たぶん、そのような大きなファイルの場合、一般的なgetline
方法を使用する必要がありますか?