C で getline() が入力を途中で終了するのはなぜですか?

Barbara Streisand
リリース: 2024-11-10 17:27:02
オリジナル
944 人が閲覧しました

Why Does getline() Terminate Input Prematurely in C  ?

C の getline() 関数のトラブルシューティング

getline() メソッドを使用してユーザーが入力したメッセージを取得しているときに、一部の開発者が問題に遭遇しました。ここで、メソッドは入力を途中で終了します。

問題: コード:

string messageVar;
cout << "Type your message: ";
getline(cin, messageVar);
ログイン後にコピー
<🎜 を使用して、「メッセージを入力してください:」とプロンプトを表示した後、プログラムはユーザー入力の待機に失敗します。 >

根本的な問題:

cin の場合 >> getline() の前に使用されると、改行文字が入力バッファーに残ります。 getline() が入力を読み取ろうとするときにこの改行はバッファーに残り、即時に終了します。

解決策:

この問題に対処するには、次の行を削除することが不可欠です。 getline() を使用する前に入力バッファから改行文字を取得します。これは、cin.ignore() 関数を使用して実現できます。変更されたコード:

string messageVar;
cout << "Type your message: ";
cin.ignore(); // Flushes the newline character
getline(cin, messageVar);
ログイン後にコピー
改行文字をフラッシュすることで、getline() はユーザーが改行を入力するまで入力を正しく読み取ることができ、意図したメッセージを取得できるようになります。

以上がC で getline() が入力を途中で終了するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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