Я столкнулся с этой проблемой при кодировании моего маленького парсера и заметил, что stringstream, похоже, не получает больше данных после того, как пробельный символ встречен.
В основном
std::stringstream stream;
stream << "Test test";
std::string str;
stream >> str;
std::cout << str;
напечатает "Test" вместо "Test test". Есть ли способ избежать этого?
Да, используйте std::getline
:
std::string str;
std::getline(stream, str);
std::cout << str; // "Test test"
<<
а в операторе >>
, std::getline
извлекает строку из потока (где все это безопасно хранится). Проверьте en.cppreference.com/w/cpp/string/basic_string/getline ПРИМЕЧАНИЕ. Это сообщение направлено на комментарий ОП, я не пытаюсь изменить ответ 0x4 ...
std::cout << stream.rdbuf();
если вы хотите сбросить весь контент вcout
.std::string
только для того, чтобы перегрузитьoperator>>
своим поведением. Проблема заключается в следующем: в каком состоянии перестать читать?