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