假设我有一个名为“ varFloat”的浮点变量,并且我使用cin允许用户输入数字,如何防止用户输入字母?
我有一个计算器程序,如果输入字母而不是数字,则会中断。
cout << "Enter num1: ";
cin >> num1;
cin.ignore();
do
{
//Select function
cout << "Enter a function ('+' '-' '*' '/'):";
getline(cin, function);
if (function == "+" || function == "-" || function == "*" || function == "/")
{
break;
}
else
{
cout << function << " IS AN INVALID FUNCTION" << endl;
}
} while (function != "+" || function != "-" || function != "*" || function != "/");
如果为num1输入一个字母,则程序似乎跳过了getline,并不断打印“ IS IN INVALID FUNCTION”。
如何防止用户输入字母?
代码不能。尝试输入A时,没有魔术手臂拍打用户的手。
相反,形成一个辅助函数,而不是简单的cin >> num1;
,以接受输入的line,分析其正确性并报告结果。有3个结果:输入可接受,输入仍然不接受,cin
仍打开,输入不可接受,并且cin
关闭。
也许扩展助手功能以丢弃不可接受的输入并在cin
仍处于打开状态时重新提示。
对于float
,我在C中使用诸如this之类的代码来执行此代码,该代码采用strtof()
进行解析并提供解析的结束位置。