Entrada de cadena básica

Acabo de encontrar este bit de código que permite a los usuarios ingresar cadenas en el símbolo del sistema. Soy consciente de lo que hacen y todo es genial. Pero tengo una pregunta con respecto a las funciones cin y 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 ;

Ahora, cuando esto es una salida, obtengo algo como: (usando a john smith como entrada)

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

Entiendo por qué sucede esto, el getline sigue leyendo desde el búfer de entrada y sé cómo solucionarlo. Mi pregunta es, ¿por qué no aparece ninguna nueva línea después de "Por favor ingrese su nombre completo otra vez:"? Cuando altere el código para:

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 ;

De repente recibo una nueva línea después de que ingreses tu nombre completo nuevamente. No es realmente un gran problema ser honesto. Pero no me importaría saber qué pasó si alguien me puede ayudar. ¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta