我有这个代码:
double input2;
cout<<"please enter one number:"<<endl;
cin>>input2;
如何判断用户是否只输入数字,如“3”、“4”或“4.241”。有时当用户输入'n'、'3.q'之类的字符时,我的程序会崩溃。
我有这个代码:
double input2;
cout<<"please enter one number:"<<endl;
cin>>input2;
如何判断用户是否只输入数字,如“3”、“4”或“4.241”。有时当用户输入'n'、'3.q'之类的字符时,我的程序会崩溃。
您可以使用 stringstream 将字符串安全地转换为数字:
string input;
int mynumber;
cout << "Please enter a valid number: ";
getline(cin, input);
// This code converts from string to number safely.
stringstream myStream(input);
if (myStream >> myNumber)
cout <<"number is valid"<<endl;
else
cout<<"invalid number";
cin::<<
如果操作出错,运算符返回NULL
。原因可能很多,但如果解释失败,failbit
则设置。您可以通过以下方式进行检查rdstate()
:
int main()
{
double input2;
cout<<"please enter one number:" << endl;
cin >> input2;
if (cin.rdstate() & ifstream::failbit)
cout << "input badly formatted" << endl;
return 0;
}
您需要验证输入是否成功
if (std::cin >> input2) {
...
}
..如果不处理错误输入,例如:
std::cin.clear();
std::cin.ignore();
它不会因此而崩溃。如果 cin >> input2 操作因无效输入而失败,则 cin 将处于无效状态,但不会崩溃。