「>>」を使用した後、getline() がループ内で予期しない動作をするのはなぜですか?

Barbara Streisand
リリース: 2024-11-25 16:51:12
オリジナル
250 人が閲覧しました

Why Does getline() Behave Unexpectedly in a Loop After Using `>>`? 
>`? " />

getline() と C のコンソール入力

C では、 getline() 関数を使用してストリームからテキスト行を抽出します。ただし、ループ内で複数回使用すると、動作する可能性があります。

問題:
文字列の場合は getline() を使用し、整数と倍精度の場合は >> を使用してユーザー入力を収集しようとすると、ユーザーは最初の文字列を入力できません。代わりに、コンソール カーソルは 2 番目の getline() の後に次の入力プロンプトにジャンプします。 call.

説明:
この問題は、getline() 演算子と >> 演算子が混在していることに起因し、先頭の空白をスキップして入力を読み取ります。ただし、入力ストリームに改行文字 (n) が残ります。

getline() の場合>> の後に呼び出されると、改行文字が空の文字列として読み取られるため、望ましくない動作が発生します。

解決策:

  1. を使用します。演算子 >> 一貫して: すべての入力が次を使用して処理できる場合>> は、そのメソッドを使用してください。
  2. 一貫して getline() を使用します: 入力に文字列または型の組み合わせが含まれる場合は、getline() のみを使用し、データからの数値を解析します。取得した文字列。これは、stringstream または Boost などのライブラリを使用して実行できます。
string line;
getline(cin, line);
int value = stoi(line); // Parse the number from the string
ログイン後にコピー

以上が「>>」を使用した後、getline() がループ内で予期しない動作をするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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