ホームページ >バックエンド開発 >C++ >C で「getline」演算子と「>>」演算子を混在させると入力省略が発生するのはなぜですか?

C で「getline」演算子と「>>」演算子を混在させると入力省略が発生するのはなぜですか?

DDD
DDDオリジナル
2024-11-29 15:13:10894ブラウズ

Why Does Mixing `getline` and `>>` 演算子により C で入力漏れが発生しますか?
C では >` 演算子によって入力漏れが発生しますか? " />

getline と Operator を混合すると入力漏れが発生する

このコードは、getline を使用してジャケットの価格に対するユーザー入力を取得しようとしているときに問題が発生しました。ユーザーにプロンプ​​トを表示すると、入力は収集されず、代わりに初期値「0」が使用されます。

根本的な問題は、演算子 >> と getline の使用法が混在していることにあります。演算子>> を使用すると、その後に改行文字が挿入されます。ただし、operator>> は空白で区切られており、改行文字は変数に割り当てられず、そのまま残ります。 buffer.

その後、getline が呼び出されると、ユーザーに入力を求めるプロンプトを表示せずに、検索基準を満たすバッファー内の改行文字がすぐに検索されます。

ソリューション

この問題を解決するには、次の点を考慮してください。オプション:

  1. getline に無視またはダミー呼び出しを使用する: 演算子>> を使用した後、無視を呼び出すか、ダミーの getline 呼び出しを実行してバッファーから改行文字を削除します。
  2. getline を排他的に使用する: 演算子を削除>> getline のみに依存します。次に、整数の場合は stoi 、倍精度の場合は stod などの関数を使用して、文字列を目的のデータ型に変換します。このアプローチにより、コードの安定性と堅牢性が向上します。

以上がC で「getline」演算子と「>>」演算子を混在させると入力省略が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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