Требуется считать из строки некоторое количество чисел. Длина строки заранее неизвестна, поэтому хотелось бы пользоваться C++'ными методами, а не привычным sscanf(). Я так понимаю, что надо делать так:
Как я получу 2 строки? Есть одна строка, например, "123 345".
Вообще, больше инрересует не обходной путь, а почему приведённый код не работает. Опытным путём установлено, что если в исходные строки в конец добавить по пробелу, то всё работает .
Спасибо за ссылку. У меня то же самое, только stringstream инициализируется по-другому. Чуть модифицировал код (повторил основную часть 2 раз), вылезла та же самая проблема:
Как я получу 2 строки? Есть одна строка, например, "123 345".
Вообще, больше инрересует не обходной путь, а почему приведённый код не работает. Опытным путём установлено, что если в исходные строки в конец добавить по пробелу, то всё работает .
Как же тебе объяснить что я тебя подталкиваю к _правельному_ варианту, а стримы это самое неудачная и бесполезная часть стандартной библиотеки C++. Когда ты начнешь решать более сложные задачи ты в этом уже убедишься на _своих_ ошибках. Вот народ...
_Правильный_ вариант был написан и работал уже через пару минут после обнаружения этой проблемы. А вот что именно не правильно в приведённом коде для меня так и остаётся тайной.
Всё, разобрался. Оказывается, после первого чтения из strm у него устанавливается флаг eof, который потом не сбрасывается присвоением strm нового значения. Так что перед последующим использованием надо вызывать strm.clear()...