0
我试图通过使用迭代器的文本文件进行迭代:的std :: istream_iterator,内存消耗
1) std::istream_iterator<MyData> itRecordStreamBegin(fileStream);
2) std::istream_iterator<MyData> itRecordStreamEnd;
它从文件中读取一些数据的第一行后(它使用操作符>>用于MyData的类型)。如预期。
不幸的是,在内存消耗上升后,似乎istream_iterator
试图在内存中加载整个文件。几秒钟后(当抛出out_of_memory异常时)调试器进入第二行。但文件阅读失败,我无法阅读更多。
问题:
是对istream_iterator
(加载文件到内存中),这是正确的行为?
对于较小的文件(例如20MB),我没有观察到这一点。
也许对于这么大的文件我需要用普通的getline
的方式吗?
你是对的!我将不得不调查这个>>操作符。感谢你的回答 – fen