当前位置: 首页 > 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…...

紧急停止与异常停机:天勤策略里的断线保护与人工兜底

前言 网络闪断、进程被 kill、策略异常未捕获&#xff0c;都可能让持仓暴露在无人管理状态。天勤文档里有紧急停止相关能力&#xff08;见 advanced/emergency_stop.rst&#xff09;&#xff0c;我把它和自建「停机即平仓/撤单」脚本配合使用。下面写工程清单&#xff0c;不替代…...

【2025 版】CMD 命令大全|超详细!零基础到精通,一篇封神✅

在Windows操作系统中&#xff0c;命令提示符&#xff08;CMD&#xff09;是一个强大的工具&#xff0c;允许用户通过输入命令来执行各种操作。无论是系统管理、网络配置&#xff0c;还是文件管理&#xff0c;CMD都能提供高效的解决方案。 一、基本命令 cd&#xff1a;更改目录…...

保姆级教程:在Linux上用ufs-utils工具搞定UFS RPMB分区读写与密钥配置

嵌入式Linux下UFS RPMB分区安全操作全指南 在嵌入式系统开发中&#xff0c;UFS&#xff08;Universal Flash Storage&#xff09;存储设备因其高性能和低功耗特性&#xff0c;已成为移动设备和嵌入式平台的首选存储方案。其中&#xff0c;RPMB&#xff08;Replay Protected Mem…...

A/B测试还在用t检验?DeepSeek团队淘汰传统方法的4个关键转折点(含贝叶斯动态决策引擎实测对比)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;A/B测试范式迁移的必然性 传统A/B测试长期依赖静态流量分配、固定实验周期与人工决策闭环&#xff0c;在现代高并发、多场景、实时反馈的业务系统中正面临三重结构性失配&#xff1a;实验吞吐量低、决策…...

kagent支持的5大AI框架对比:ADK、CrewAI、LangGraph、OpenAI、技能框架

kagent支持的5大AI框架对比&#xff1a;ADK、CrewAI、LangGraph、OpenAI、技能框架 【免费下载链接】kagent Cloud Native Agentic AI | Discord: https://bit.ly/kagentdiscord 项目地址: https://gitcode.com/gh_mirrors/ka/kagent kagent作为一款云原生智能代理平台&…...

Langchain自定义LLM实战:我把一个简单的Python函数变成了AI模型接口

LangChain自定义LLM实战&#xff1a;从Python函数到智能接口的魔法变形记 在AI应用开发的世界里&#xff0c;大型语言模型(LLM)正以前所未有的速度改变着技术格局。但你是否想过&#xff0c;那些看似神秘的AI接口背后&#xff0c;其实隐藏着一个惊人的简单本质&#xff1f;今天…...

从选型到设计:手把手教你根据7系列FPGA数据手册做项目选型(以Kintex-7为例)

从选型到设计&#xff1a;手把手教你根据7系列FPGA数据手册做项目选型&#xff08;以Kintex-7为例&#xff09; 在硬件系统设计中&#xff0c;FPGA选型往往决定着项目的成败。面对Xilinx 7系列丰富的产品线&#xff0c;工程师需要像外科医生选择手术器械一样精准——既要考虑当…...

深圳 EMC 整改避坑指南:别让一次失败,毁掉整个产品周期

深圳&#xff0c;这座全球电子产业的心脏&#xff0c;每天都有上百款新产品从这里走向世界。但 2026 年 4 月 FCC 新规的落地&#xff0c;给无数深圳电子企业浇了一盆冷水&#xff1a;单次海外测试费暴涨至 6-10 万元&#xff0c;周期拉长到 6-12 周&#xff0c;一次整改失败&a…...

AI教材写作超强攻略:借助工具3天完成25万字,低查重有保障!

许多教材编写者常常感到遗憾&#xff0c;尽管他们花费大量时间打磨正文内容&#xff0c;但缺乏配套资源却使得教学效果受限。想要设计出有层次的课后练习&#xff0c;却常常缺少创新的想法&#xff1b;虽然希望制作直观的教学课件&#xff0c;但又缺乏相关的技术能力&#xff1…...

周末短途游成新风尚,家门口也能遇见诗与远方

如今生活节奏不断加快&#xff0c;长时间的长途旅行对很多人来说成了一种奢望&#xff0c;周末短途游便顺势走进大众生活&#xff0c;成为越来越多人放松身心的选择。不必提前很久规划行程&#xff0c;不用纠结复杂的交通攻略&#xff0c;甚至不用打包厚重的行李&#xff0c;只…...