C の
getline() : ライン バッファリングの処理
C では、 getline() は標準入力ストリーム cin から入力を読み取るために使用されます。改行文字が現れるまで。ただし、ユーザー入力が要求されるプログラムで使用すると、予期しない動作が発生する可能性があります。
次のコード スニペットを検討してください。
int number; string str; int accountNumber; cout << "Enter number:"; cin >> number; cout << "Enter name:"; getline(cin, str); cout << "Enter account number:"; cin >> accountNumber;
このプログラムを実行すると、次のことに気付くかもしれません。最初の番号を入力すると、プログラムは名前の入力を待たずに、すぐに口座番号の入力を求めます。これは、getline() が入力バッファーから残りの改行文字を読み取るためです。
この問題を回避するには、getline() の前に std::ws (空白) を使用して、すべての空白文字と改行文字をスキップします。入力ストリーム。これにより、 getline() が次の非空白文字から入力を読み取ることが保証されます:
cout << "Enter number:"; cin >> number; cout << "Enter name:"; cin >> ws; getline(cin, str); ...
このステップを組み込むことにより、プログラムは次の入力に進む前に名前の入力を正しく要求します。
>以上がC の `getline()` がユーザー入力をスキップする場合があるのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。