ホームページ > バックエンド開発 > C++ > C で数値入力後の正しい文字列入力に `cin.ignore()` が重要なのはなぜですか?

C で数値入力後の正しい文字列入力に `cin.ignore()` が重要なのはなぜですか?

Susan Sarandon
リリース: 2024-12-10 18:16:12
オリジナル
562 人が閲覧しました

Why Is `cin.ignore()` Crucial for Correct String Input After Numerical Input in C  ?

C の cin.ignore() の謎を解く

C プログラムでユーザーと対話するとき、文字列入力のスキップなどの予期しないシナリオが発生する可能性があります。起きます。一見無害な cin.ignore() 呼び出しが、このような複雑な問題を解決する鍵を握っています。

cin.ignore() が重要な理由

ユーザーが数字を入力したとき続いて文字列を入力して Enter キーを押すと、改行文字 (「n」) が入力バッファに挿入されます。続いて、cin>>;数字;数値を消費しますが、「n」文字はバッファ内に残ります。 cin.ignore() が存在しない場合、cin >> getline(cin, mystr);

cin.ignore() 関数は、指定された文字数 (この例では 256) を無視するか、区切り文字 (' に遭遇するまで) を無視することで、この問題を解決します。この場合は n')。

必要性の予測cin.ignore()

cin.ignore() が必要な場合の予測には、入力バッファーに文字が残る可能性を理解することが含まれます。これが必須となる状況は次のとおりです:

  • 数値を読み取った後 (例: cin >> num;)
  • 後続の入力が文字列の場合 (例: cin >>) getline(cin, mystr);)
  • 入力に区切り文字以外の文字が含まれている場合、意図せず再吸収される

例: コードの詳細を調べる

提供された C プログラムについて考えてみましょう:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    double num;
    string mystr;

    cout << "Please enter a number: " << endl;
    cin >> num;
    cout << "Your number is: " << num << endl;
    cin.ignore(256, '\n'); // Ignore any remaining characters
    cout << "Please enter your name: \n";
    getline (cin, mystr);
    cout << "So your name is " << mystr << "? \n";
    cout << "Have a nice day. \n";

}
ログイン後にコピー

cin.ignore( ) cin の後に呼び出します >>数字; 'n' 文字が確実に無視され、後続の cin >> が許可されます。 getline(cin, mystr);文字列入力を正しく読み取るため。

以上がC で数値入力後の正しい文字列入力に `cin.ignore()` が重要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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