ホームページ >バックエンド開発 >C++ >数値入力後に「getline()」が空の文字列を返すのはなぜですか?

数値入力後に「getline()」が空の文字列を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-23 19:05:14504ブラウズ

Why Does `getline()` Return an Empty String After Number Input?

getline() 入力の問題 [重複]

getline() を使用して文字列変数 (str) のユーザー入力を取得すると、改行文字の動作に注意することが重要です。数値を取得した後、改行文字が入力バッファに残ります。これにより、後続の getline() 呼び出しがすぐに空の文字列で返される可能性があります。

提供されたコードでは、数値入力の後の改行は消費されず、导結果getline(cin, str) はすぐに空の文字列で返されます。 string.

解決策:

改行文字をスキップして適切な getline() を確保するには動作を変更するには、ws (空白) マニピュレータを使用します。

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(cin, str);

cin.ignore() ステートメントは、入力バッファ内の次の改行までの残りの文字をすべて読み取って破棄し、改行を効果的に消費します。

以上が数値入力後に「getline()」が空の文字列を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。