getline() の動作について
C の getline() 関数は、改行文字が入力されるまで標準入力から文字を読み取るために使用されます。遭遇した。ただし、開発者は、cin の抽出演算子 (>>) の後に getline() を使用すると、予期しない問題が発生する可能性があります。
問題の説明
ユーザーは、コードがgetline() を使用してユーザー提供のメッセージをキャプチャしようとするときに、ユーザー入力の受信を一時停止しません。根本的な原因は、cin 抽出演算子の動作に関連しています。
解決策: 改行文字をフラッシュする
cin の抽出演算子を使用してデータを読み取ると、改行が残ります。入力バッファ内の文字 (n)。 getline() が直後に呼び出されると、この改行文字に遭遇し、すぐに読み取りが停止します。
この問題を解決するには、getline() を呼び出す前にバッファから改行文字をフラッシュする必要があります。これは、次のように cin.ignore() を使用することで実現できます。
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
cin.ignore() を挿入すると、改行文字が破棄され、getline() が意図したとおりにユーザーの入力を読み取ることができるようになります。この手法により、cin 演算子と getline() の両方が連続してスムーズに機能することが保証されます。
以上が「cin」の抽出演算子を使用した後に「getline()」が機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。