У меня есть istringstream, называемый 'is', и содержит строку «101a0101». Мой код здесь:istream не потребляет персонажей?
cout << is.str() << endl;
char bit;
while (is >> bit) {
if (bit == '0') /* do stuff */;
else if (bit == '1') /* do stuff */;
else break;
}
cout << is.str() << endl;
Вот мой выход
output:
101a0101
101a0101
Почему мой istringstream потребляющие символов?
Что именно вы ожидаете, что выход будет? 'str()' возвращает копию последовательности символов * whole *. Он не отображает то, что еще не было прочитано. – 0x499602D2
Я ожидаю, что второй выход (после цикла) будет «a0101», поскольку мой цикл будет потреблять все символы до «a». Разве строка 'while (is >> bit) не удаляет один символ из потока и не помещает его в бит? А если нет, как я могу? – Oxcug
Есть ли 'istream' метод' str'? Вы имели в виду 'istringstream'? –