Я пытаюсь перебирать в текстовый файл, используя итераторы:станд :: istream_iterator, потребление памяти
1) std::istream_iterator<MyData> itRecordStreamBegin(fileStream);
2) std::istream_iterator<MyData> itRecordStreamEnd;
После первой строки она читает некоторые данные из файла (он использует оператор >> для типа MyData). Как и ожидалось.
К сожалению, после этого потребление памяти увеличивается, и кажется, что istream_iterator
попытался загрузить весь файл в память. Через несколько секунд (когда исключены исключения out_of_memory) отладчик попадает во вторую строку. Но чтение файла не удалось, и я больше ничего не могу прочитать.
Вопросы:
Является ли это правильное поведение для istream_iterator
(для загрузки файла в память)?
Я не соблюдаю это для небольших файлов (например, 20 МБ).
Возможно, для такого большого файла мне нужно использовать обычный способ getline
?
Вы правы! Мне придется исследовать этот оператор >>. Спасибо за ответ – fen