Что-то тупизна накатила.
Есть считанный из файла/инета/порта буфер (варианты: char*/std::string/std::stringstream):
1. Съешь ещё этих мягких французских булок
2. Съешь ещё этих мягких французских булок
3. Съешь ещё этих м
Нужно
извлечь из него каждую полную строку (1, 2), сделать с ней всякое и оставить в буфере неполную (3), чтобы следующая операция чтения дописала
ягких французских булок
4. Съешь ещё этих мягких французских булок
5. Съешь ещ
и получить 3, 4 и т.д. строки.
С++98 к сожалению и без всяких там Boost'ов :(
Понимаю, что можно посимвольно решить вопрос, но может есть более красивое решение?
Вот взяли getline, скажем, пока не получили failbit, а дальше что? getline же не удаляет данные из буфера/stream?
Как потом эти данные выбросить и сдвинуть остаток в начало буфера, чтобы продолжить запись и не раздувать буфер?