我有这段代码:
double input2;
cout<<"please enter one number:"<<endl;
cin>>input2;
如何判断用户是否仅输入数字,如“3”,“4”或“4.241”。有时当用户输入“n”,“3.q”等字符时,我的程序会崩溃。
答案 0 :(得分:2)
您可以使用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";
答案 1 :(得分:1)
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;
}
答案 2 :(得分:0)
因此不会崩溃。如果cin&gt;&gt;由于输入无效,input2操作失败,cin处于无效状态,但不会崩溃。
答案 3 :(得分:0)
您需要验证输入是否成功
if (std::cin >> input2) {
...
}
..如果它没有处理错误的输入,例如:
std::cin.clear();
std::cin.ignore();