Войти второй раз в тот же поток
От: SergH Россия  
Дата: 26.08.08 11:25
Оценка:
Привет!

Есть поток std::istream
Есть xml-парсер подвида SAX, который принимает этот поток на вход.

Проблема в том, что есть несколько видов xml-файлов, и хочется написать для каждого из них свой обработчик, а не пихать всю логику в один большой. Что за файл обрабатывается, можно понять по первому тегу. Т.е. надо распарсить файл до первого тега, прочитать тег, сказать "ага!", и потом, зная тип файла, парсить его заново.

Вопрос в том, как реализовать это "заново". Для этого нужно как-то отмотать поток данных назад... Про метод putback я знаю, но в данном случае я не контролирую чтение, читает парсер, я не знаю, что он там прочёл.

Есть какие-то красивые варианты? Копировать пока не хочется, там может быть довольно много. Даже "копировать первые несколько килобайт" пока не очень хочется.
Делай что должно, и будь что будет
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.