C ++如何在输入字母时停止崩溃

时间:2016-01-30 19:13:39

标签: c++

我有一个任务是制作一个计算两个数字的程序。 并且还显示每个数字之间的计算。

Console

如果我输入一个字母而不是数字,程序会崩溃,这是一个更高级的任务,我不需要这样做,但我真的想知道如何做到这一点。所以这就是我的问题,我如何让程序给我一个警告,告诉我不要使用字母,如果你输入一封信,你仍然可以输入数字,而不是崩溃。

这是我的代码到目前为止的样子

  

块引用

float nmr1, nmr2;

cout << "Write two numbers.\n";

cin >> nmr1;
cin >> nmr2;
cout << "\n";


cout << nmr1 << " + " << nmr2 << " = " << nmr1 + nmr2 << endl;
cout << nmr1 << " - " << nmr2 << " = " << nmr1 - nmr2 << endl;
cout << nmr1 << " * " << nmr2 << " = " << nmr1 * nmr2 << endl;
cout << nmr1 << " / " << nmr2 << " = " << nmr1 / nmr2 << endl;



cin.get();
cin.get();

return 0;

也许有更容易写的东西,但我是初学者,我会使用搜索工具,但我不知道要搜索什么。

4 个答案:

答案 0 :(得分:2)

如果输入失败,

cin >> var_of_type_float将返回false。因此,只需在条件表达式中使用它,例如:

if (cin >> nmr1) { // all ok

答案 1 :(得分:1)

如果要检查输入,通常的方法是读取一个字符串,检查是否有无效字符,然后将其解析为一个数字(C ++中带有实数的繁琐任务)并存储在一个浮点数中,最后,用这些花车进行操作。

如果您还没有处理文本输入,我建议您等待实现此功能,因为对于初学者来说编程可能很复杂

答案 2 :(得分:0)

要检查是否通过cin收到错误输入,请使用以下条件:

if(!cin){
   // bad input was received, don't use cin again.
}

答案 3 :(得分:0)

真正崩溃的是零分割操作。
如果输入的数字无效,则nmr1和nmr2将为0
和nmr1 / nmr2会崩溃。在尝试分割之前,您必须检查(nmr2!= 0)。