Я хочу прочитать std::string с именем destination из std::cin до заданного разделителя. По умолчанию std::istream::operator<< прерывается после пробела, когда я делаю destination << std::cin. Если бы destination был char[], я мог бы использовать std::getline.
Что мы используем для std::string?
Его орешек дубликат @Tas !!!!! Я хочу использовать std :: string, а не char [], и я уже упоминал об этом !!!!
Извините, я не совсем понял, когда сказал прочитай все ответы. Если вы прокрутите немного ниже под принятым ответом, вы найдете там ответ, который поможет вам
@EduardRostomyan Вот почему он предложил прочитать все ответы. Используйте std::getline. Это не то же самое, что std::cin::getline.
О моем редактировании: правильно ли я понял ваше намерение?
ой мой плохой @Tas, ty





Используйте std::getline, например:
std::string InputWithSpaces;
std::getline (std::cin,InputWithSpaces);
std::cout << InputWithSpaces << std::endl; //test 1 2 3
Ваша посылка неверна: std::getline действительно работает с std::string:
template< class CharT, class Traits, class Allocator >
std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>& input,
std::basic_string<CharT,Traits,Allocator>& str,
CharT delim );
Это означает, что вы можете читать с std::cin на std::string до заданного разделителя:
std::string destination;
std::getline(std::cin, destination, '|');
('|' взят в качестве примерного разделителя)
Примечание: вы должны проверить возврат getline перед чтением из destination. getline возвращает ссылку на std::cin, которая может быть преобразована в bool, значение которой равно true, если поток находится в правильном состоянии:
if (std::getline(std::cin, destination, '|') == false) {
// error handling
}
код. добавить код.