解开 C 中 cin.ignore() 之谜
在 C 程序中与用户交互时,可能会出现意外情况,例如跳过字符串输入出现。看似无害的 cin.ignore() 调用是解决此类令人困惑的问题的关键。
为什么 cin.ignore() 至关重要
当用户输入数字时后跟一个字符串,按 Enter 键会将换行符 ('n') 插入输入缓冲区。随后,cin>>数量;消耗数字但将“n”字符保留在缓冲区中。当 cin.ignore() 不存在时,cin >>>获取行(cin,mystr);无意中读取了“n”字符而不是字符串输入。
cin.ignore() 函数通过忽略指定数量的字符(在我们的示例中为 256)或直到遇到分隔符('在这种情况下)。
预测需要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 >>获取行(cin,mystr);正确读取字符串输入。
以上是为什么'cin.ignore()”对于 C 中数字输入后正确的字符串输入至关重要?的详细内容。更多信息请关注PHP中文网其他相关文章!