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() が必要な場合の予測には、入力バッファーに文字が残る可能性を理解することが含まれます。これが必須となる状況は次のとおりです:
例: コードの詳細を調べる
提供された 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 サイトの他の関連記事を参照してください。