Grundlegende String-Eingabe

Ich bin gerade auf dieses Codebit gestoßen, mit dem Benutzer Zeichenfolgen in die Eingabeaufforderung eingeben können. Ich bin mir dessen bewusst, was sie tun und es ist alles großartig. Ich habe aber eine Frage zu den Funktionen cin und 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 ;

Wenn dies ausgegeben wird, erhalte ich Folgendes: (Verwenden von John Smith als Eingabe)

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

Ich verstehe, warum dies passiert, die Getline liest immer noch aus dem Eingabepuffer und ich weiß, wie man es behebt. Meine Frage ist, warum kommt nach "Bitte geben Sie Ihren vollständigen Namen noch einmal ein:" keine neue Zeile? Wenn ich den Code ändere zu:

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 ;

Plötzlich erhalte ich eine neue Zeile, nachdem Sie Ihren vollständigen Namen erneut eingegeben haben. Es ist nicht wirklich ein großes Problem, um ehrlich zu sein. Aber es würde mir nichts ausmachen zu wissen, was passiert ist, wenn mir jemand helfen kann. Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage