首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证C++中的输入

问验证C++中的输入
EN

Stack Overflow用户
提问于 2012-11-25 07:28:49
回答 4查看 144关注 0票数 0

我有这样的代码:

代码语言:javascript
复制
double input2;
cout<<"please enter one number:"<<endl;
cin>>input2;

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

EN

回答 4

Stack Overflow用户

发布于 2012-11-25 07:34:54

您可以使用stringstream将字符串安全地转换为数字:

代码语言:javascript
复制
 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";
票数 2
EN

Stack Overflow用户

发布于 2012-11-25 07:36:49

如果操作出错,则cin::<<运算符返回NULL。原因可能有很多,但如果解释失败,则设置failbit。你可以用rdstate()检查它

代码语言:javascript
复制
int main()
{
  double input2;
  cout<<"please enter one number:" << endl;

  cin >> input2;

  if (cin.rdstate() & ifstream::failbit)
     cout << "input badly formatted" << endl;

  return 0;
}
票数 1
EN

Stack Overflow用户

发布于 2012-11-25 07:32:39

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13546719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档