Могу ли я обработать isstrstream для получения случайных поисков в базовый буфер ввода-вывода?
У меня есть код, который будет читать весь файл в буфер. В моих целях я могу гарантировать, что размер такого файла не превышает, скажем, 10 МБ... достаточно мал, чтобы нам никогда не приходилось беспокоиться о проблемах с перебоями или реальной производительностью при чтении полного файла.
Кроме того, в настоящее время я извлекаю строку за раз, используя isstrstream в результирующем буфере всего файла. Это прекрасно работает и позволяет мне использовать строковые данные, лежащие в основе, по одной строке за раз.
Однако теперь мне нужно посмотреть, смогу ли я сохранить текущую позицию isstrstream и "перейти туда" позже... то есть скопировать isstrsteam и в целом обработать его как объект значения. Разрешено / гарантировано ли это как разумное использование isstrstreams?
Если это имеет значение, я использую VS2010.
Кроме того, как вы будете искать ответы на что-то вроде этого (кроме stackru)? Выполнение некоторых поисков в Google дает мне много случайных точек данных об отдельных методах isstrsteam и приводит к большому разнообразию информации о связанных классах - базовых классах, братьях и сестрах или подклассах. Но ответить на поставленный вопрос гораздо менее ясно (для меня).
1 ответ
Можно использовать члены istream<>::tellg() и istream<>::seekg() для сохранения / восстановления позиции потока, аналогично fgetpos и fsetpos.
istrstream поддерживает эти методы, как и istringstream.