0

我有这个代码:

double input2;
cout<<"please enter one number:"<<endl;
cin>>input2;

如何判断用户是否只输入数字,如“3”、“4”或“4.241”。有时当用户输入'n'、'3.q'之类的字符时,我的程序会崩溃。

4

4 回答 4

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";
于 2012-11-24T23:34:54.390 回答
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;
}
于 2012-11-24T23:36:48.517 回答
0

您需要验证输入是否成功

if (std::cin >> input2) {
    ...
}

..如果不处理错误输入,例如:

std::cin.clear();
std::cin.ignore();
于 2012-11-24T23:34:48.693 回答
0

它不会因此而崩溃。如果 cin >> input2 操作因无效输入而失败,则 cin 将处于无效状态,但不会崩溃。

于 2012-11-24T23:32:39.457 回答