我用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";
}