Это не «провал»; это просто перестает читать. Он видит лексический токен как «строку».
Использование std::getline
:
int main()
{
std::string name, title;
std::cout << "Enter your name: ";
std::getline(std::cin, name);
std::cout << "Enter your favourite movie: ";
std::getline(std::cin, title);
std::cout << name << "'s favourite movie is " << title;
}
Обратите внимание, что это не , как std::istream::getline
, которое работает с буферами char
в стиле C, а не std::string
s.
Обновление
Ваш отредактированный вопрос мало похож на оригинал.
Вы пытались getline
в int
, а не в строковый или символьный буфер. Операции форматирования потоков работают только с operator<<
и operator>>
. Либо используйте один из них (и соответственно измените для ввода нескольких слов), либо используйте getline
и преобразуйте лексически в int
по факту.