我尝试使用迭代器迭代文本文件:
1) std::istream_iterator<MyData> itRecordStreamBegin(fileStream);
2) std::istream_iterator<MyData> itRecordStreamEnd;
在第一行之后,它从文件中读取一些数据(它使用运算符 >> 表示 MyData 类型)。正如预期的那样。
不幸的是,在那之后内存消耗增加了,似乎istream_iterator
试图将整个文件加载到内存中。几秒钟后(当抛出 out_of_memory 异常时)调试器进入第二行。但是文件读取失败,我无法读取更多内容。
问题:
这是istream_iterator
(将文件加载到内存中)的正确行为吗?
对于较小的文件(如 20MB),我没有观察到这一点。
也许对于这么大的文件我需要使用常见的getline
方式?