двунаправленный итератор над файлом / ifstream

Мне нужен поток входного файла, который имел бы двунаправленный итератор / адаптер.

К сожалению, std :: ifstream (и аналогичные) можно использовать только с std :: istream_iterator , который является своего рода итератором вперед, который не может двигаться назад. (или я здесь ошибаюсь?)

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

Я мог бы как-то сделать это вручную, используя функции C stdio.h , но это будет болезненно. Мне в основном нужно было бы вручную реализовать двунаправленный итератор со всей его спецификацией.

Я подумываю о том, чтобы изучить библиотеку boost iostream, но руководство несколько утомительно. Я надеялся, что кто-нибудь поможет мне в достижении этой конкретной цели? Или, может быть, есть еще одна уже существующая библиотека, чтобы делать именно то, что мне нужно?

Мне нужен итератор для библиотеки boost xpressive для анализа моих файлов, который предполагает, что итератор может как увеличиваться, так и уменьшаться. Было бы хорошо, если бы файл, который я читаю, был помещен в буфер, хотя это не является обязательным требованием.

Есть идеи? Спасибо!

10
задан CygnusX1 26 January 2012 в 22:58
поделиться