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