C ++ Чтение файла снизу вверх - PullRequest
0 голосов
/ 01 февраля 2010

У меня есть очень большой файл, который мне нужно проанализировать, поэтому считывание его в память одновременно не является идеальным. То, как файл структурирован, было бы намного проще, если бы я мог начать с eof и перейти к началу. У кого-нибудь есть хороший трюк для этого? Я использую Visual Studio 2008 и C ++. Спасибо

Ответы [ 4 ]

7 голосов
/ 01 февраля 2010

Если ваша операционная система поддерживает это, рассмотрите возможность использования файла с отображенной памятью. Затем вы можете обрабатывать содержимое файла как очень большой массив байтов, при этом операционная система управляет переносом данных в память (и их освобождением) по мере необходимости.

1 голос
/ 01 февраля 2010

Сохраните файл в обратном порядке.

1 голос
/ 01 февраля 2010

Невозможно сделать положение «уменьшением» вместо увеличения после каждого чтения / записи. Вот почему у вас есть только EOF, а не SOF. Единственный способ - вызвать fseek / seekg () / seekp () после каждого чтения или записи, чтобы отменить изменение позиции, но это будет очень медленно.

0 голосов
/ 01 февраля 2010

Если вы намерены сделать это много, как насчет создания обратного класса BufferedInputStream - вы сможете дать некоторую меру контроля над размером каждого куска файла, хранящегося в буфере, и скрыть всю служебную работу от клиента. .

То, что другие говорили о перемещении после каждого фактического ввода / вывода файла, остается в силе - это только улучшит удобство использования, а не производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...