C++中限定输入整形,输入字符串如何处理异常[通俗易懂]

C++中限定输入整形,输入字符串如何处理异常

大家好,又见面了,我是全栈君。

在C++中有时候我们会有一定的需求,需要限定用户只能够输入整形数字的时候。但是我们都能够知道用户哪里懂那么多,哪里管那么多,都是想要尝试一下的,那么这时候我们就必须需要对输入进行一定的处理了,不然随时有可能导致系统奔溃,那可是不行的喔。

#include "iostream"
using namespace std;

int main()
{ 
   
	int i_a;  // 接受用户输入整形内容
	cout << "input a int:";  // 提示信息
	cin >> i_a;  
	cout << "input:" << i_a << endl;;
	system("pause");
	return 0;
}

正常来说,这样子就能够满足我们的要求了,但是真的就那么简单吗?
你能够确保你的客户都是高智商吗?他们都会按照你的提示进行输入吗?
答案当然是:不可能,用户是什么都有可能做的,你必须保证你的系统,你的代码容错性能足够强大,才能够让傻瓜用户多能够简单上手。那么我们必须对我们的代码进行修改,使得代码的容错性能足够强大,才能够使得自己的代码足够牛逼。

话不多说,上手吧。首先我们需要对用户输入的内容进行检测,接受用户输入的(使用一个临时的字符串进行接受),接受到的输入进行字符串转换整形,是否能够正确转换,能够正确转换就说明用户输入的是整形,是一个正确的输入,不能够转换说明输入的内容有问题,给出提示,让用户重新输入。

#include "iostream"
#include "regex"
using namespace std;

bool IsRegexInput(string str1)          // 使用正则表达式进行匹配,
{ 
   
	bool flag;
	flag = true;
	regex r("\\d{1,3}");
	while (!(flag = regex_match(str1, r)))
	{ 
   
		return flag;
	}
	return flag;
}

int main()
{ 
   
	int i_a;
	string str;
	cout << "input a int:"; 
	cin >> str;
	while (!IsRegexInput(str))   // 判断输入的内容是否为整形
	{ 
   
		cout << "输入内容格式有误,请输入数字:";
		cin >> str;
	}
	i_a = atoi(str.c_str());     //输入没有问题,进行字符串转换为整形

	cout << "input:" << i_a << endl;
	system("pause");
	return 0;
}

使用正则表达式进行匹配用户输入的内容,就能够使得输入的内容是我们需要的内容了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115097.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android自动画廊,Android:使画廊无限循环的图像

    android自动画廊,Android:使画廊无限循环的图像我在我的项目中使用了一个画廊,其中我添加了四个图像,我希望它从右侧和左侧都是无限的.我该如何做到这一点?解决方法:主要思想是在你的getView方法中,你必须使用position=position%imagesArray.length;if(position<0)position=position+imagesArray.length;imagesArray是将图像保存…

    2022年6月14日
    27
  • HTML制作网页_手机制作html网页

    HTML制作网页_手机制作html网页一、步骤1、HTML1、新建文本文档2、改后缀名.html3、以记事本方式打开并编写代码4、保存,关闭后,直接双击打开网页

    2022年9月23日
    0
  • gateway网关详解_网关和网桥的定义

    gateway网关详解_网关和网桥的定义3.5.Gateway网关的概念之前的操作,我们有了管理他的配置中心和注册中心。下一步我们就要配置网关了。于是,问题就要回到什么是网关?以及为什么要配置网关上来了。先聊聊为什么要配置网关。注册中心相当于对各种服务进行调度,把他们安排的明明白白的。但注册中心能力再打,他也没办法安置前端的请求,让他们一一入座,也没办法对一些恶意请求进行拦截。问题就出现了,前端服务此时只能自己在配置里改变请求的位置,而且,每次改变请求就要更改配置,重新上线。恶意请求也无法拦截。这显然是不合理的。于是,网关出现了。

    2022年10月11日
    1
  • Centos7上安装Docker完整版[通俗易懂]

    Centos7上安装Docker完整版[通俗易懂]首先确认你是CentOs7版本: 命令:cat /etc/redhat-release ——————————————————————————————————————————————————————安装步骤:1、 yum安装gcc相关 命令: yum-yinstallgcc(保证能上外网)、yum -y install gcc-c++…

    2022年6月13日
    46
  • latex中希腊字母怎么输入_在电脑上怎么打希腊字母

    latex中希腊字母怎么输入_在电脑上怎么打希腊字母$$\alpha\quad\beta$$%\quad空格的意思$$\gamma\quad\Gamma$$$$\delta\quad\Delta$$$$\theta\quad\Theta$$$$\epsilon\quad\pi$$$$\Pi\quad\omega$$$$\Omega$$

    2022年10月13日
    0
  • 网络编程:socket 编程

    网络编程:socket 编程socket编程-客户端/服务器架构:即C/S架构1,硬件C/S架构(打印机)2,软件C/S架构(web服务)C/S架构与socket的关系:socket就是为了完成C/S架构的开

    2022年7月4日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号