Я только что наткнулся на фрагмент кода, который позволяет пользователям вводить строки в командной строке. Я знаю, что они делают, и это все здорово. Но у меня есть вопрос относительно функций cin и getline().
string name ;
cout << "Please enter your full name: " ;
cin >> name ;
cout << "Welcome " << name << endl ;
cout << "Please enter your full name again please: " ;
getline(cin , name) ;
cout << "That's better, thanks " << name << endl ;
return 0 ;
Теперь, когда это выводится, я получаю что-то вроде: (используя john smith в качестве ввода)
Please enter your full name: john smith
Welcome John
Please enter your full name again: That's better thanks Smith
Я понимаю, почему это происходит, getline все еще читает из входного буфера, и я знаю, как это исправить. Мой вопрос: почему после «Пожалуйста, введите свое полное имя еще раз:» нет новой строки? Когда я изменяю код на:
string name ;
cout << "Please enter your full name: " ;
cin >> name ;
cout << "Welcome " << name << endl ;
cout << "Please enter your full name again please: " ;
cin.ignore( 256, '\n') ;
getline(cin , name) ;
cout << "That's better, thanks " << name << endl ;
return 0 ;
Внезапно я получаю новую строку после того, как вы снова вводите свое полное имя. Честно говоря, это не очень большая проблема. Но я был бы не против узнать, что произошло, если бы кто-нибудь мог мне помочь. Спасибо!