Как реализовать seekg () для пользовательского istream / streambuf?

Я был экспертом по C ++ десять лет назад, но последние 10 лет я программировал на Java. Я только начал проект C ++, который использует небольшой сторонний анализатор XML. Синтаксический анализатор XML принимает поток STL. Мои данные XML поступают из Windows COM IStream. Я решил сделать правильную вещь и создать адаптер для получения данных IStream и представления их синтаксическому анализатору XML через istream.

Я следовал прекрасному учебнику по адресу http: //www.mr-edd. .co.uk / blog / beginners_guide_streambuf и создал COMStreambuf, который берет данные из базового COM IStream и использовал его в качестве буфера для настраиваемого потока COMI. Все выглядит хорошо, но я получаю ошибку чтения от парсера.

Оказывается, парсер читает весь файл в память, используя seekg () для istream, чтобы узнать его размер, а затем возвращается к началу с seekg ( ) прочитать его за один раз. Неудивительно, что вышеупомянутый учебник решил " )

6
задан konsolebox 29 April 2015 в 07:31
поделиться