コードは次のとおりです。
string str;
cin>>str;
cout<<"first input:"<<str<<endl;
getline(cin, str);
cout<<"line input:"<<str<<endl;
その結果、getline はユーザー入力のために一時停止しないため、2 番目の出力は常に空になります。
しばらく時間を費やした後、最初の呼び出し「cin>>str」の後、「\ n」がまだcinに保存されているようで(cin.peek()を使用して確認)、getlineがすぐに終了することに気付きました。解決策は、最初の使用と 2 番目の使用の間にもう 1 行追加することです。
cin.ignore(numeric_limits::max(), '\n');
ただし、最初の呼び出しの後に '\n' が残っているのはなぜですか? istream& operator>> は実際に何をしますか?