Podstawowe wejście String

Właśnie natknąłem się na ten fragment kodu, który umożliwia użytkownikom wprowadzanie ciągów znaków w wierszu polecenia. Jestem świadomy tego, co robią i wszystko jest świetnie. Ale mam pytanie dotyczące funkcji cin i 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 ;

Teraz, gdy to jest wyjście, otrzymuję coś w rodzaju: (używając wejścia Johna Smitha jako wejścia)

Please enter your full name: john smith
Welcome John
Please enter your full name again: That's better thanks Smith

Rozumiem, dlaczego tak się dzieje, getline nadal czyta z bufora wejściowego i wiem, jak to naprawić. Moje pytanie brzmi: dlaczego nie ma nowej linii po „Proszę podać swoje imię i nazwisko:”? Kiedy zmieniam kod na:

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 ;

Nagle otrzymuję nową linię po ponownym wpisaniu pełnego imienia i nazwiska. Szczerze mówiąc, to nie jest ogromny problem. Ale nie miałbym nic przeciwko temu, żeby wiedzieć, co się stanie, jeśli ktoś może mi pomóc. Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion