Problema de usar cin duas vezes

Aqui está o código:

string str;
cin>>str;
cout<<"first input:"<<str<<endl;
getline(cin, str);
cout<<"line input:"<<str<<endl;

O resultado é que o getline nunca pausa para a entrada do usuário; portanto, a segunda saída está sempre vazia.

Depois de passar algum tempo nisso, percebi que, após a primeira chamada "cin >> str", parece que '\ n' ainda está armazenado em cin (usando cin.peek () para verificar), o que termina o getline imediatamente. A solução adicionará mais uma linha entre o primeiro uso e o segundo:cin.ignore(numeric_limits::max(), '\n');

No entanto, ainda não entendo, por que '\ n' permanece lá após a primeira chamada? O que o istream & operator >> realmente faz?

questionAnswers(6)

yourAnswerToTheQuestion