c++验证用户输入合法性的示例代码
c++验证用户输入合法性的示例代码
本文介绍c++验证用户输入合法性,用于检测限定用户输入值。包括:1、限定用户输入为整数(正负整数);2、限定用户输入为正整数;3、限定用户输入为正数(可以含有小数);4、限定用户输入为一个数;5、限定只能输入为英语字母。
提示:下面程序,需要编译器支持c++11标准。
【若你使用Dev-C++,需要设置:打开“工具[T]→编译选项[C]”菜单,添加 -std=c++11,然后按“确定”按钮生效。参见下图红圈处:
】
1、限定用户输入为整数
可以是正负整数,提供有几种方式的源码,供选用
源码1:
#include <iostream>
using namespace std;
//判断输入的字符串是否为整数,直至合规才返归其值
int judge(int temp)
{ //对输入的合法性进行判断并返回有效的输入//int temp;cin.sync(); //清空输入流缓冲区cin>>temp;while(1){if(cin.fail()||cin.bad()||cin.get()!='\n') //验证输入是否合法,其中cin.fail()和cin.bad()解决输入字符串和溢出的问题cout<<"错误!请重新输入:"<<endl; //cin.get()检查输入流中是否还有字符(如果有就表示输入的是形如123r或12.3的错误else break; //输入合法则跳出循环cin.clear(); //清空输入流缓冲区标志位,以免影响下次输入cin.sync(); cin>>temp;}return temp;
}int main()
{cout<<"请输入整数:"<<endl;int a; cout<<"合规的输入:"<<judge(a)<<endl;return 0;
}
运行效果如下:
源码2:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;//是整数返回1,否则返回0
bool isNumber3(const string& str)
{return str.find_first_not_of( "-0123456789" ) == string::npos &&str.front() != '.' && str.back() != '.';
}int main(){string str;cout<<"请输入整数:"<<endl;cin>>str;while(!isNumber3(str)){cout<<"请输入整数,不要输入字母:"<<endl;cin>>str;}cout <<"合规输入:"<<str<<endl;//exit(EXIT_SUCCESS);return 0;
}
运行效果如下:
2、限定用户输入为正整数
提供有几种方式的源码,供选用
源码1
#include <iostream>
#include<string>
using namespace std;
//判断输入的字符串是否为正整数,若是,则合规返归其值 ,否则给出提示继续
int CheckNum(int& n)
{int i;string x; //用来接受输入bool flag = false;while (cin >> x) {for (i = 0; i < x.size(); ++i) {//判断是否为中文if (x[i] & 0x80) {cout << "\n输入错误,请重新输入正确的数字: ";break;}//判断是否为字母或者其它字符if (!isdigit(x[i])) {cout << "\n输入错误,请重新输入正确的数字: ";break;}}if (i == x.size()) {break; //如果字符串中所有字符都合法,则退出while循环}}n = atoi(x.c_str()); //将string字符串转化为整数return n;
}int main()
{int m,n;while (true) {cout << "请输入正整数:";n=CheckNum(m);cout <<"合规输入:"<<n<<endl;break; //退出循环 }
}
运行效果如下:
源码2
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stdlib.h> //为了使用 c_str() 函数
using namespace std;
//将string转为char数组并判断输入是否为正整数
int check1(string s){char a[s.length()];strcpy(a,s.c_str());int i; for(i = 0;i<s.length();i++){//如果不是数字if(!isdigit(a[i])){return -1; }}return 0;
}//string 转 int
int s2i(string s)
{return atoi( s.c_str() );
}int main()
{string n0;//判断用户输入用int n;//真正存储的变量cout<<"请输入:"<<endl;cin>>n0;//判断输入的n0是否符合要求while(check1(n0)){cout<<"请输入正整数,不要输入负数或者小数或字母:"<<endl;cin>>n0;}n = s2i(n0);//string转为int存储 cout <<"合规输入:"<<n<<endl;}
运行效果如下:
源码3:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;//是正整数返回1,否则返回0
bool isNumber(const string& str)
{return !str.empty() &&find_if(str.begin(), str.end(),[](unsigned char c) { return !isdigit(c); }) == str.end();
}int main(){string str;cout<<"请输入正数:"<<endl;cin>>str;while(!isNumber(str)){cout<<"请输入正整数,不要输入负数或者小数或字母:"<<endl;cin>>str;}cout <<"合规输入:"<<str<<endl;//exit(EXIT_SUCCESS);return 0;
}
运行效果如下:
3、限定用户输入为正数
可以含有小数
源码1:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stdlib.h> //为了使用 c_str() 函数
using namespace std;
//将string转为char数组并判断输入是否为正数
int check2(string s){char a[s.length()];strcpy(a,s.c_str());int i; for(i = 0;i<s.length();i++){//如果不是数字且不是小数点 if((!isdigit(a[i])) && (a[i]!='.')){return -1; }}return 0;
}//string 转 double
double s2d(string s)
{return atof( s.c_str() );
}int main(){string n0;//判断用户输入用double n;//真正存储的变量cout<<"请输入正数:"<<endl;cin>>n0;//判断输入的n0是否符合要求while(check2(n0)){cout<<"请输入正数,不要输入负数或字母:"<<endl;cin>>n0;}n = s2d(n0);//string转为double存储 cout <<"合规输入:"<<n<<endl;
}
运行效果如下:
源码2:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;//是正数返回1,否则返回0
bool isNumber3(const string& str)
{return str.find_first_not_of( ".0123456789" ) == string::npos &&str.front() != '.' && str.back() != '.';
}int main(){string str;cout<<"请输入正数:"<<endl;cin>>str;while(!isNumber3(str)){cout<<"请输入正数,不要输入负数或字母:"<<endl;cin>>str;}cout <<"合规输入:"<<str<<endl; return 0;
}
运行效果如下:
4、限定用户输入为一个数
包括正负整数、正负小数,但不能含有字母
源码如下
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;//是数返回1,否则返回0
bool isNumber3(const string& str)
{return str.find_first_not_of( "+-.0123456789" ) == string::npos &&str.front() != '.' && str.back() != '.';
}int main(){string str;cout<<"请输入数:"<<endl;cin>>str;while(!isNumber3(str)){cout<<"请输入数,不要输入字母:"<<endl;cin>>str;}cout <<"合规输入:"<<str<<endl;//exit(EXIT_SUCCESS);return 0;
}
运行效果如下:
5、限定只能输入为英语字母
源码如下
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;//是英语字母返回1,否则返回0
bool isNumber3(const string& str)
{return str.find_first_not_of( "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" ) == string::npos &&str.front() != '.' && str.back() != '.';
}int main(){string str;cout<<"请输入英语字母:"<<endl;cin>>str;while(!isNumber3(str)){cout<<"请输英语字母:"<<endl;cin>>str;}cout <<"合规输入:"<<str<<endl;//exit(EXIT_SUCCESS);return 0;
}
运行效果如下:
OK!
参考
https://www.jiyik.com/tm/xwzj/prolan_3518.html
相关文章:

c++验证用户输入合法性的示例代码
c验证用户输入合法性的示例代码 本文介绍c验证用户输入合法性,用于检测限定用户输入值。包括:1、限定用户输入为整数(正负整数);2、限定用户输入为正整数;3、限定用户输入为正数(可以含有小数&…...

ctfshow web入门phpcve web311-315
1.web311 通过抓包发现php版本时为PHP/7.1.33dev 漏洞cve2019-11043 远程代码执行漏洞 利用条件: nginx配置了fastcgi_split_path_info 受影响系统: PHP 5.6-7.x,Nginx>0.7.31 下载工具进行利用 需要安装go环境 yum install golang -y …...

gpt.4.0-gpt 国内版
gpt 使用 GPT(Generative Pre-trained Transformer)是一种预训练的语言模型,可用于多种自然语言处理任务,如情感分析、文本分类、文本生成等。下面是使用GPT的一些步骤和建议: 确定任务和数据集:首先&…...

放弃手动测试,快来了解JMeter压测神器的安装和使用吧~~
目录:导读 引言 jmeter的安装 JMeter是干什么的 JMeter都可以做那些测试 JMeter的使用和组件介绍 下面我们进行XML格式的实战练习 jmeter与postman的区别 JSON的插件 另附视频教程资源 引言 你是否曾经为手动测试而苦恼?是不是觉得手动测试太费…...

SQL函数
文章目录 一、SQL 函数二、SQL COUNT() 函数三、SQL FIRST() 函数四、SQL LAST() 函数五、SQL MAX() 函数总结 一、SQL 函数 SQL 拥有很多可用于计数和计算的内建函数。 SQL Aggregate 函数 SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。 有用的 Aggre…...

苦熬10年,国产操作系统“归零”,新操作系统上新,跟Excel很像
苦熬10余年,国产操作系统自主研发 说到国内自主研发的操作系统,经验最丰富的品牌,当然是麒麟OS. 从诞生到发展,历经10多年的努力,麒麟os逐渐成为了国内自主研发操作系统领域中的一颗耀眼的明珠。麒麟OS不仅推出了许多…...

什么是shell脚本和简单shell脚本练习
文章目录 什么是shell脚本和简单shell脚本练习什么是shell脚本为什么要学习shell脚本第一个脚本编写与执行编写第一个脚本 简单的shell脚本练习简单案例交互式脚本:变量内容由用户决定随日期变化:利用date建立文件数值运算:简单的加减乘除数值…...

MySQL MyBatis
MySQL从表中随机查一条数据 SELECT * FROM address ORDER BY RAND() LIMIT 1MySQL查询表是否存在 select count(*) from information_schema.TABLES where table_name #{tableName}插入数据插入随机的uuid <insert id"insertComment" parameterType"com.…...

Leetcode力扣秋招刷题路-0802
从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 802. 找到最终的安全状态 有一个有 n 个节点的有向图,节点按 0 到 n - 1 编号。图由一个 索引从 0 开始 的 2D 整数数组 graph表示, graph[i]是与节点 i 相邻的节…...

编程中最难的就是命名?这几招教你快速上手
作者:陈立(勤仁) 你可不能像给狗狗取名字那样给类、方法、变量命名。仅仅因为它很可爱或者听上去不错。 在写代码的时候,你要经常想着,那个最终维护你代码的人可能将是一个有暴力倾向的疯子,并且他还知道你住在哪里。 01 为什么…...

NUXT规范及常见问题
props中不要使用Web环境才有的对象,服务端渲染的时候会失败 使用<Nuxt/>组件代替<router-view/>,使用<NuxtLink/>代替<router-link/>static目录下的资源是静态资源,不应该通过import或../static/img/logo.png等方式…...

2023年Q1天猫空调品牌销量排行榜
如今,空调的普及水平较高,空调行业进入存量换新为主的发展阶段。 根据鲸参谋数据分析平台的相关数据显示,2023年Q1在天猫平台上,空调的销量将近100万件,销售额将近30亿,同时,空调产品的产品均价…...

如何在比特币系统内创造人工生命
信息来源:coingeek.com 自2015年以来,关于比特币能否进行复杂计算以及比特币是否“图灵完备”的争论一直在持续。不幸的是,现在存在着一种流传甚广的谬论,有人说比特币并非图灵完备的,它不能像以太坊区块链那样进行复杂…...

除了Figma,再给你介绍10款好用的协同设计软件
组织结构越来越复杂,团队中的每个人都有独特的技能、经验和专业知识。我们怎样才能让团队更好地合作?在这种情况下,协同设计应运而生。 UI的未来是协同设计!如果你想把握未来的设计趋势,不妨从使用高效的协同设计软件…...

信息安全复习五:数据加密标准(DES)
一、本章梗概 1.主要内容:分组密码、分组密码用到的关键技术和结构、对称密钥密码典型算法DES 2.思考问题: ①按照明文被处理的形式,DES属于标准的分组密码 ②根据密钥的使用数量,DES属于标准的对称密码 3.内容回顾: …...

Java ---包装类
(一)包装类概念 官方说法: Java是面向对象的语言,但是为了便于开发者的使用,Java中却沿用了C语言的基本数据类型,在进行基本的数据计算时,开发者可以直接使用基础类。但是当需要和Java其他对象…...

Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)
项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…...

MSVC(Microsoft Visual C++) 中运行库的链接方式MD和MT的区别
问题描述 MSVC(Microsoft Visual C) 中运行库的链接方式MD和MT的区别 问题解答 在MSVC编译器中,运行库(Runtime Library)有两种链接方式:MD(Multithread-DLL)和MT(Multithread)。这两种链接方式的主要区…...

设计模式之解释器模式(C++)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、解释器模式是什么? 解释器模式是一种行为型的软件设计模式,定义了一个解释器,来解释给定语…...

基于MATLAB编程的粒子群算法优化BP神经网络风电功率预测,基于PSO-BP的风电功率预测
目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于粒子群算法改进优化BP神经网络的风电功率 matlab代码 代写下载链接:https://download.csdn.net/download/a…...

开心档之C++ 字符串
C 字符串 目录 C 字符串 C 风格字符串 实例 实例 C 中的 String 类 实例 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 …...

Java Collection源码分析(JDk corretto 11)
文章目录 Collection 系列源码分析 (JDK Amazon corretto 11)Collection接口Iterable接口 子接口 QueueQueue的子接口 Deque双端队列 子接口ListArrayList 实现类序列化与反序列化(后续解决)获取Calss对象的方式 主要有三种:Arrays工具类System类 LinkedList实现类t…...

13种权重的计算方法
权重计算方法有很多种,不同的方法有不同的特点和适用情况。AHP层次分析法和熵值法在权重计算中属于比较常用的方法。除此之外,还有一些与权重计算相关的方法,今天一文总结了13种与权重计算相关的方法,大家可以对比选择使用。 一、…...

Devops和Gitops区别
一. 什么是devops DevOps 是一种开发(Dev)和运维(Ops)之间协作和沟通的文化、流程和工具的实践方法。它强调迭代、快速交付和持续集成/持续交付,旨在加速软件交付的速度、质量和稳定性。 DevOps 的核心目标是通过自动…...

拿下多家车企定点!4D毫米波雷达「域」系统首发出道
从1R、2R、3R到整车360感知方案,毫米波雷达的前装市场需求量依然保持着快速增长的态势。 高工智能汽车研究院监测数据显示,2022年中国市场(不含进出口)前装标配搭载ADAS毫米波雷达(前向后向盲区)交付1795.…...

【FATE联邦学习】FATE联邦学习使用GPU、指定cuda下标
问题 FATE框架1.x支持GPU训练吗? 寻找 先看了官网,搜官网,发现还是有的。 打开第一个后,里面可以用training param指定各个client的训练GPU,但是好像都是在large language model的。 而在文档中搜寻到的gpu…...

英文数字表达
1基数词 0 nought;zero;O 1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 9 nine 10 ten 11 eleven 12 twelve 13 thirteen 14 fourteen 15 fifteen 16 sixteen 17 seventeen 18 eighteen 19 nineteen 20 twenty21 twenty-one 22 twenty-two 23 twenty-three 30 th…...

第11届蓝桥杯省赛真题剖析-2020年6月21日Scratch编程初中级组
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第125讲。 第11届蓝桥杯省赛,这是2020年6月21日举办的省赛Scratch考试真题,原定于2020年3月7日…...

部署LVS-NAT群集实验
一、 实验准备 负载调度器:内网关 ens33:192.168.109.12,外网关 ens37:12.0.0.1外网 Web节点服务器1:192.168.109.13 Web节点服务器2:192.168.109.14 NFS服务器:192.168.109.11 客户端…...

对待工作的九个级别
只要是职场人,每天都要开展本职工作,有的人在职场上混得风生水起、平步青云,有的人却总是在原地踏步踏,总有一种怀才不遇的感叹,为什么呢?其实,差距就在于对待工作的态度上。 今天我们一起与各位…...