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