Как очистить струнный поток?

c++ stringstream

78808 просмотра

1 ответ

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

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;

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

Автор: There is nothing we can do Источник Размещён: 12.09.2019 01:03

Ответы (1)


220 плюса

Решение

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

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

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

Автор: CB Bailey Размещён: 17.05.2010 10:02
Вопросы из категории :
32x32