getline が入力を要求しない: バッファの問題のケース
C で getline(cin, mystr) を使用すると、ユーザー入力を求めるプロンプトが表示されず、代わりに初期値「0」が価格変数に割り当てられるという問題があります。これは、getline は改行文字 ('n') に遭遇するまで入力を読み取り、入力バッファーに改行文字が残る可能性があるためです。
この問題は、>> のような入力ストリーム演算子を混在させるときに発生します。ゲットラインで。 cinを使用する場合>> i 整数を読み取る場合、ユーザーの入力の後に改行文字が続きます。ただし、この改行は入力バッファ内に残ります。その後 getline を呼び出すと、ユーザーにプロンプトを表示せずに、改行文字が入力として解釈されます。
考えられる解決策:
cin.ignore(); getline(cin, mystr);
int getInt() { string input; getline(cin, input); return stoi(input); }
推奨プラクティス:
すべての入力に getline を使用し、改行文字が適切に処理され、常に入力を求められます。混合は避けてください。>>これらのバッファの問題を防ぐには getline を使用します。
以上がC で「getline」が入力を求めるプロンプトを表示しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。