C の
>` C では? " />
C の getline() について
getline() メソッドを使用して C でユーザー入力を取得する場合、次のような一般的な問題を覚えておくことが重要です。 >> 演算子で cin を使用した直後に getline() を使用すると、ユーザー入力を正しく取得できない可能性があります。
問題:
を考えてみましょう。次のコード スニペット:
string messageVar; cout << "Type your message: "; getline(cin, messageVar);
このコードでは、getline() がユーザー入力を読み取り、messageVar に保存することが想定されていますが、場合によっては、getline() が途中で停止し、messageVar が空のままになります。 .
解決策:
この問題を解決するには、前の cin >> 操作で入力バッファに残った改行文字をフラッシュする必要があります。これは、cin.ignore():
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
問題の理由:
を使用すると、>> を使用して実行できます。ただし、空白文字 (スペースや改行など) が見つかるまでは、改行文字が入力バッファーに残るため、getline() は改行を入力の終わりとして解釈して読み取りを停止します。 cin.ignore() を使用すると、改行文字がバッファーから削除され、getline() が正しく機能できるようになります。
以上がC で `cin` を `>>` とともに使用すると `getline()` が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。