在C ++中验证输入

时间:2012-11-24 23:28:49

标签: c++

我有这段代码:

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

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

4 个答案:

答案 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();