判断输入是否合法
2016-05-10 22:12
204 查看
一、判断输入是否为数字
通常使用方法1和3,方法2和4无法保证一定能判断正确。
1)函数isdigit
2)当使用cin,cout输入流时
3)创建数组存储输入的数据的每一位并判断
若存在元素小于0或大于9的情况,则表明数字中有其他非数字元素存在,则肯定不是整形!
元素都在0-9之间,若数组的首位是0且0之后还有其余的元素如0123,这样的也不是数字!
可以通过有无小数点来区分整形和浮点型,且要保证小数点只出现一次。
4)通过检测cin的状态来表明输入的是否为数字
注:
int a; cin >> a; //输入3.5 此时cin.fail()和cin.bad()都为false,a的值为3
char a;cin >> a;//输入3.5 此时cin.fail()和cin.bad()都为false,a的值是'3'
int a;cin >> a;//输入c 此时cin.fail()为true,cin处于阻塞状态,可以判断出输入的数据类型错误。
只有在变量为整形或浮点型,输入数据不是整形或者浮点型的时候,才会使得cin处于错误状态;
若反过来变量是字符类型,输入数据是整形或者浮点型,都不会改变cin的状态。
而且对于特殊情况:
float a;cin >> a;//输入3.c 此时cin.fail()和cin.bad()为false 无法判断出输入数据错误!!!!!!!
通常使用方法1和3,方法2和4无法保证一定能判断正确。
1)函数isdigit
表头文件 | #include<ctype.h> |
定义函数 | int isdigit(char c) |
函数说明 | 检查参数c是否为阿拉伯数字0到9。 |
返回值 | 若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。 |
int num; while(!(cin>>num)){ //cin输入错误时执行下边语句 cin.clear(); //清除流标记 cin.sync(); //清空流 cout<<"输入了非数字字符"<<endl; //打印错误提示 }
3)创建数组存储输入的数据的每一位并判断
bool check( char *str ) { int i; for ( i = 0; i < strlen( str ); i++ ) if ( str[ i ] < '0' || str[ i ] > '9' ) return false; return true; }
若存在元素小于0或大于9的情况,则表明数字中有其他非数字元素存在,则肯定不是整形!
元素都在0-9之间,若数组的首位是0且0之后还有其余的元素如0123,这样的也不是数字!
可以通过有无小数点来区分整形和浮点型,且要保证小数点只出现一次。
4)通过检测cin的状态来表明输入的是否为数字
int a; cin >> a; if(cin.fail()){ cout << "输入的不是数字!" << endl; }
注:
int a; cin >> a; //输入3.5 此时cin.fail()和cin.bad()都为false,a的值为3
char a;cin >> a;//输入3.5 此时cin.fail()和cin.bad()都为false,a的值是'3'
int a;cin >> a;//输入c 此时cin.fail()为true,cin处于阻塞状态,可以判断出输入的数据类型错误。
只有在变量为整形或浮点型,输入数据不是整形或者浮点型的时候,才会使得cin处于错误状态;
若反过来变量是字符类型,输入数据是整形或者浮点型,都不会改变cin的状态。
而且对于特殊情况:
float a;cin >> a;//输入3.c 此时cin.fail()和cin.bad()为false 无法判断出输入数据错误!!!!!!!
相关文章推荐
- c++实验五—数组分离
- 动态规划C++
- C指针 的一些练习
- OpenGL编程低级错误及常见问题解答
- 小代码 反转单链表和 反转前K个节点的单链表
- Scheme之功能分解和封装内部函数/块结构
- android.support.v7.widget.Toolbar 中menu图标不显示问题
- 动态规划04—最长的zigzag序列
- 关于JSON
- ELK中如何搭建客户端客户端如何将日志发送给服务端的logstash
- POJ 2253 Frogger
- iOS开发 - 第01篇 - UI基础 - 04 - 超级猜图
- C++实验五—数组分离
- UIImage加载图片的方式以及Images.xcassets对于加载方法的影响
- c_str()函数
- linux之脚本初体验
- 同一时刻,只能有一个应用程序打开/dev/buttons驱动程序。 使用信号量
- 内存恶鬼drawRect - 谈画图功能的内存优化
- BZOJ 3160 万径人踪灭
- jQuery -- 选择器和事件