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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python替换字符串元素_python替换字符串中的子串图文步骤「建议收藏」

    python替换字符串元素_python替换字符串中的子串图文步骤「建议收藏」python替换字符串中的子串图文步骤修改字符串本身是不可能的,因为字符串是不可变类型,只能是通过某些方法来产生它的副本。再把副本赋值给原字符串,达到类似替换的作用。这里介绍几种方法。旧串换新串:使用str.replace(old,new,max)1)字符串调用此函数时,将生成一个字符串的副本。副本中new将替代old。2)old-原来的子串。3)new-新子串,用于替换old。4)max-…

    2022年6月5日
    28
  • matlab ga算法_基因算法和遗传算法

    matlab ga算法_基因算法和遗传算法遗传算法(GeneticAlgorithm,GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解(所找到的解是全局最优解)的方法。参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。1)种群初始化。我们需要首先通过随机生成的方式来创造一个种群,一般该种群的数量为100…

    2022年10月23日
    0
  • clion2022激活教程-激活码分享

    (clion2022激活教程)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    4.4K
  • pycharm下载插件_SiteD 插件中心

    pycharm下载插件_SiteD 插件中心我使用的PyCharm软件的版本:2016.1.4参考网站:https://www.jetbrains.com/help/pycharm/2016.1/installing-updating-and-uninstalling-repository-plugins.html给PyCharm软件添加plugins的图文操作(这里以添加Markdown插件)Step1.启动PyC

    2022年8月26日
    2
  • vue跨域解决方案_vueaxios跨域请求

    vue跨域解决方案_vueaxios跨域请求vue跨域解决方案在浏览器里面只要域名,端口,ip地址,协议,有任何不同则为跨域如:A网站:http://localhost:8080/B网站:http://localhost:3030/已经跨域解决方案:JOSNP(只能处理get请求)cors(后端开启)axios服务器代理跨域只存在浏览器中服务器之间不存在跨域所以可以通过服务器代理(在后端不给配置的情况下)1.先下载axios2.先创建一个vue.config.js文

    2022年10月1日
    0
  • ON、WHERE、HAVING的差别

    ON、WHERE、HAVING的差别

    2021年12月14日
    40

发表回复

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

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