我有这样的代码:
double input2;
cout<<"please enter one number:"<<endl;
cin>>input2;如何判断用户是否只输入数字,如“3”、“4”或“4.241”。有时当用户输入像“n”,“3.q”这样的字符时,我的程序就会崩溃。
发布于 2012-11-25 07:34:54
您可以使用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";发布于 2012-11-25 07:36:49
如果操作出错,则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;
}发布于 2012-11-25 07:32:39
它不会因为这个而崩溃。如果cin >> input2操作由于无效输入而失败,cin将处于无效状态,但不会崩溃。
https://stackoverflow.com/questions/13546719
复制相似问题