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…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...
SQL注入篇-sqlmap的配置和使用
在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…...
CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?
在现代前端开发中,Utility-First (功能优先) CSS 框架已经成为主流。其中,Tailwind CSS 无疑是市场的领导者和标杆。然而,一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...
SOC-ESP32S3部分:30-I2S音频-麦克风扬声器驱动
飞书文档https://x509p6c8to.feishu.cn/wiki/SKZzwIRH3i7lsckUOlzcuJsdnVf I2S简介 I2S(Inter-Integrated Circuit Sound)是一种用于传输数字音频数据的通信协议,广泛应用于音频设备中。 ESP32-S3 包含 2 个 I2S 外设,通过配置…...
