当前位置: 首页 > news >正文

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验证用户输入合法性&#xff0c;用于检测限定用户输入值。包括&#xff1a;1、限定用户输入为整数&#xff08;正负整数&#xff09;&#xff1b;2、限定用户输入为正整数&#xff1b;3、限定用户输入为正数&#xff08;可以含有小数&…...

ctfshow web入门phpcve web311-315

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

gpt.4.0-gpt 国内版

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

放弃手动测试,快来了解JMeter压测神器的安装和使用吧~~

目录&#xff1a;导读 引言 jmeter的安装 JMeter是干什么的 JMeter都可以做那些测试 JMeter的使用和组件介绍 下面我们进行XML格式的实战练习 jmeter与postman的区别 JSON的插件 另附视频教程资源 引言 你是否曾经为手动测试而苦恼&#xff1f;是不是觉得手动测试太费…...

SQL函数

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

苦熬10年,国产操作系统“归零”,新操作系统上新,跟Excel很像

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

什么是shell脚本和简单shell脚本练习

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

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

编程中最难的就是命名?这几招教你快速上手

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

NUXT规范及常见问题

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

2023年Q1天猫空调品牌销量排行榜

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

如何在比特币系统内创造人工生命

信息来源&#xff1a;coingeek.com 自2015年以来&#xff0c;关于比特币能否进行复杂计算以及比特币是否“图灵完备”的争论一直在持续。不幸的是&#xff0c;现在存在着一种流传甚广的谬论&#xff0c;有人说比特币并非图灵完备的&#xff0c;它不能像以太坊区块链那样进行复杂…...

除了Figma,再给你介绍10款好用的协同设计软件

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

信息安全复习五:数据加密标准(DES)

一、本章梗概 1.主要内容&#xff1a;分组密码、分组密码用到的关键技术和结构、对称密钥密码典型算法DES 2.思考问题&#xff1a; ①按照明文被处理的形式&#xff0c;DES属于标准的分组密码 ②根据密钥的使用数量&#xff0c;DES属于标准的对称密码 3.内容回顾&#xff1a; …...

Java ---包装类

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

Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机&#xff0c;可用于各种应用场景&#xff0c;如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能&#xff0c;可以实时传输高分辨率图像。此外&#xff0c;该相机还具…...

MSVC(Microsoft Visual C++) 中运行库的链接方式MD和MT的区别

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

设计模式之解释器模式(C++)

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

基于MATLAB编程的粒子群算法优化BP神经网络风电功率预测,基于PSO-BP的风电功率预测

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

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...