ホームページ > バックエンド開発 > C++ > C で `cin` を `>>` とともに使用すると `getline()` が失敗するのはなぜですか?

C で `cin` を `>>` とともに使用すると `getline()` が失敗するのはなぜですか?

DDD
リリース: 2024-11-12 04:59:02
オリジナル
785 人が閲覧しました

C の

Why Does `getline()` Fail After Using `cin` with `>>` 
>` 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート