我正在尝试从用户那里获取一个整数,但是如果他们键入“ ckefkfek”,它将导致该程序被垃圾邮件破坏。我也希望他们输入一个浮点数,但是我遇到了同样的问题,却不知道如何检查。
int option = 0;
while (option != 3)
{
cout << "Enter 1, 2, or 3: ";
cin >> option;
switch (option)
{
case 1:
cout << "Enter a float: ";
float myfloat;
cin >> myfloat;
myFunc(myfloat); // must be a float for this function to work.
break;
case 2:
// do stuff
break;
case 3:
// do stuff
break;
default:
cout << endl << "Not a valid option." << endl;
break;
}
}
如何在没有持续错误的情况下做到这一点?谢谢!
bool input_ok = false;
while (!input_ok)
{
cout << "Enter 1, 2, or 3: ";
if (cin >> option)
{
input_ok = true;
...
}
else
{
cout << "Stop being silly\n";
std::string dummy;
if (cin >> dummy)
cin.clear();
else
throw std::runtime_error("OK, I'm not playing any more");
}
}
基本上,如果输入可能失败,则需要测试输入是否失败。您可以通过使用来检查流后的状态cin >> option; if (cin) ...
,或者通过将读取和测试进行如下组合来测试该流的状态:if (cin >> option) ...
如果输入失败,请读取无法解析为整数的任何内容并将其丢弃,然后重试。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句