string - 当程序要求输入数字时,防止用户输入字母的最简单方法是什么?
问题描述
假设我有一个名为“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 AN INVALID FUNCTION”。
解决方案
如何防止用户输入字母?
代码不能。当尝试进入时,没有魔法手臂可以拍打用户的手A。
相反,形成一个辅助函数,而不是简单地cin >> num1;
,接受一行输入,解析它的正确性并报告结果。有 3 个结果:输入可接受,输入不可接受但cin
仍处于打开状态,输入不可接受且cin
已关闭。
cin
也许扩展辅助函数以丢弃不可接受的输入并在仍然打开时重新提示。
对于float
,我在 C 中使用诸如此类的代码来执行此操作,该代码用于解析strtof()
并提供解析结束位置。
推荐阅读
- javascript - 无法使用 ajax 发送更大的 json(array) 数据
- javascript - Jspdf-自动行跨度修复
- php - Woocommerce codeigniter Rest API
- azure - Azure 容器实例 - 公开端口以绑定 443 (HTTPS)
- sql - 使用查询完成sql同步
- multithreading - 哪个更有效:多线程程序中的 curl_easy_perform() 或单线程程序中的 curl_multi_perform()?
- r - 用 R 中的彩色单元格绘制表格
- amazon-s3 - 使用额外参数 AWS S3 访问私有文件
- php - 在php中制作自动回复
- qt - qmake 不复制文件(安装)