ホームページ > バックエンド開発 > C++ > `getline()` が整数を読み取った後に入力をスキップするのはなぜですか?

`getline()` が整数を読み取った後に入力をスキップするのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-16 21:06:11
オリジナル
231 人が閲覧しました

Why Does `getline()` Skip Input After Reading an Integer?

getline() の問題: 改行のスキップ

cin を使用して整数を読み取った後に getline(cin, str) を使用してユーザー入力を取得する場合>>数値を指定すると、名前のプロンプトで str の入力がスキップされるという予期しない動作が発生する可能性があります。これは、getline(cin, str) が前の整数入力によって残された改行文字を読み取って破棄するために発生します。

この問題に対処するには、getline(cin, str) の前に std::ws を使用して空白をスキップできます。文字列を読み取る前に、改行を含む。これにより、getline(cin, str) は、名前プロンプトをスキップすることなく、ユーザー入力を正しく読み取ることができます。

int number;
string str;
int accountNumber;

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(cin, str);
cout << "Enter account number:";
cin >> accountNumber;
ログイン後にコピー

cin.ignore を使用すると、残りの空白や改行を効率的にバイパスし、getline(cin, str) が可能になります。 ) 意図したとおりにユーザーの名前入力をキャプチャします。

以上が`getline()` が整数を読み取った後に入力をスキップするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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