Обычно, чтобы "сбросить" строковый поток, нужно как сбросить базовую последовательность в пустую строку с помощью str
, так и очистить все флаги fail и eof с помощью clear
.
parser.str( std::string() );
parser.clear();
Обычно происходит так: первый >>
достигает конца строки и устанавливает бит eof, хотя он успешно разбирает первую короткую строку. Операции над потоком после этого немедленно терпят неудачу, потому что бит eof потока все еще установлен.