Как очистить stringstream? [дубликат]


этот вопрос уже есть ответ здесь:

  • Как очистить переменную stringstream? 8 ответов
stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); //HERE I'M RESETTING parser

parser << 6; //DOESN'T PUT 6 INTO parser
short bottom = 0;
parser >> bottom;

почему это не работает?

1 107

1 ответ:

обычно для "сброса" струнного потока вам нужно как сбросить базовую последовательность в пустую строку с str и очистить любые флаги fail и eof с помощью clear.

parser.str( std::string() );
parser.clear();

обычно происходит то, что первый >> достигает конца строки и устанавливает бит eof, хотя он успешно анализирует первый короткий. Операции над потоком после этого немедленно завершаются неудачей, потому что бит eof потока все еще установлен.