Могу ли я обработать isstrstream для получения случайных поисков в базовый буфер ввода-вывода?

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

Кроме того, в настоящее время я извлекаю строку за раз, используя isstrstream в результирующем буфере всего файла. Это прекрасно работает и позволяет мне использовать строковые данные, лежащие в основе, по одной строке за раз.

Однако теперь мне нужно посмотреть, смогу ли я сохранить текущую позицию isstrstream и "перейти туда" позже... то есть скопировать isstrsteam и в целом обработать его как объект значения. Разрешено / гарантировано ли это как разумное использование isstrstreams?

Если это имеет значение, я использую VS2010.

Кроме того, как вы будете искать ответы на что-то вроде этого (кроме stackru)? Выполнение некоторых поисков в Google дает мне много случайных точек данных об отдельных методах isstrsteam и приводит к большому разнообразию информации о связанных классах - базовых классах, братьях и сестрах или подклассах. Но ответить на поставленный вопрос гораздо менее ясно (для меня).

1 ответ

Решение

Можно использовать члены istream<>::tellg() и istream<>::seekg() для сохранения / восстановления позиции потока, аналогично fgetpos и fsetpos.

istrstream поддерживает эти методы, как и istringstream.

Другие вопросы по тегам