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