我用 C + + 编写了一个非常基本的程序,要求用户输入一个数字,然后输入一个字符串。令我惊讶的是,当运行这个程序时,它从来没有停下来要求输入字符串。就这么跳过去了。在读了一些关于 StackOverflow 的文章后,我发现我需要添加一行内容:
cin.ignore(256, '\n');
在获取字符串输入的行之前。添加这个修复了问题并使程序正常工作。我的问题是,为什么 C + + 需要这个 cin.ignore()
行,我如何预测什么时候我将需要使用 cin.ignore()
?
这是我写的程序:
#include <iostream>
#include <string>
using namespace std;
int main()
{
double num;
string mystr;
cout << "Please enter a number: " << "\n";
cin >> num;
cout << "Your number is: " << num << "\n";
cin.ignore(256, '\n'); // Why do I need this line?
cout << "Please enter your name: \n";
getline (cin, mystr);
cout << "So your name is " << mystr << "?\n";
cout << "Have a nice day. \n";
}