ユーザーがコマンドプロンプトで文字列を入力できるようにするこのコードを見つけました。私は彼らが何をするかを知っています、そしてそれはすべて素晴らしいです。しかし、cin 関数と 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 ;
これが出力されると、次のようなものが得られます: (入力として john smith を使用)
Please enter your full name: john smith
Welcome John
Please enter your full name again: That's better thanks Smith
なぜこれが起こるのか理解しています.getlineはまだ入力バッファから読み取っていて、それを修正する方法を知っています. 私の質問は、「Please enter your full name again:」の後に改行がないのはなぜですか? コードを次のように変更すると:
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 ;
フルネームをもう一度入力すると、突然改行が表示されます。正直なところ、それほど大きな問題ではありません。しかし、誰かが私を助けてくれるなら、何が起こったのかを知ってもかまいません. ありがとう!