cin读取数字时遇到字符的情况
来源:互联网 发布:安倍为什么能连任 知乎 编辑:程序博客网 时间:2024/06/05 19:17
cin读取数字时遇到字符
当定义一个int变量,用cin输入时,如果输入的是一个字符,会发生以下4中情况:
1.n的值变成0
2.不匹配的输入被留在输入流中
3.cin对象的一个错误标记被设置,即cin.fail()返回true
4.对cin的方法调用返回false,即(cin>>n)返回的是false
#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; //也可以用 if(cin>>n) cout<"yes\n";用这条语句的时候,前面就不需要cin>>n了 if(cin.fail()==false) cout<<"yes\n"; //输入的是数字 else cout<<"no\n"; //输入的不是数字 return 0;}当发生这种情况时,cin对象的一个错误标记被设置。设置这个标记后,不再进行输入。若要后续还想再输入,可以使用cin.clear()清空标记。如下:
#include<bits/stdc++.h>using namespace std;int main(){ int n; if(cin>>n) cout<<"yes\n"; else cout<<"no\n"; cin.clear(); //清空标记 cin.get(); //吸收上一次输入的最后的回车 int b; cin>>b; cout<<b<<endl; return 0;}如果没有cin.get()吸收上一次输入的'\n'。则接下来输入b时,相当于把'\n'输入给b,相当于又把一个字符输入给一个int变量,会发生上面的4种情况。
注意当输入的是数字的时候,输入流中会自动忽略空格回车等控制字符。只有当输入的是字符时,才会保留'\n'在输入流中。
int a,b;cin>>a;cin>>b;这种情况下,如果输入的都是数字,及时输入中有回车,但输入流中不会保留回车,即不会把'\n'输入给b,而是把第二个数输入给b。如果第一个输入的是字符,则'\n'会保留在输入流中,此时在执行cin>>b语句时,会把'\n'输给给b。。。。
自己多试试体会一下就明白了。。
阅读全文
0 0
- cin读取数字时遇到字符的情况
- cin读取字符直至再次遇到空白符,读取终止
- 读取 Configuration 时遇到的情况
- 【C++】读取循环数字和cin的利用
- 各种字符读取方法的比较(cin,getline等)
- 各种字符读取方法的比较(cin,getline等)
- 关于scanf和cin读取字符的错误
- cin和cin.get()在输入字符时的区别
- 读取数字的循环,用cin表达式的值判断错误输入并清除cin流接受新的输入
- 遇到的int型数字越界的情况
- cin读取出错的解决方案
- cin的读取从右至左
- 利用cin.putback()可以很方便的分离输入输入流中的数字和字符
- 【转】 各种字符读取方法的比较(cin,getline等)
- 用CFindFile()读取文件下的图片,当图片名为数字时,不按照顺序读取的情况
- 使用cin时遇到的一些错误与解决
- 关于java读取文件时遇到Unicode乱码情况
- C++ Cin输入数字时 输入字母 Cin状态出错
- 2017年第23届全国青少年信息学奥林匹克竞赛分区联赛提高组复赛题解报告
- (20)cache
- weakly typicality VS strongly typicality
- Shiro整合SSO单点登录系统
- pid调试
- cin读取数字时遇到字符的情况
- 使用HD Tune扫描一块1TB的机械硬盘需要多长时间?
- phpexcel导出导入
- 笔记 34 | java线程之Thread线程优先
- SpringBoot 中文手册 --Part IV --37-40
- Android 使用Retrofit自定义Converter解析相同接口返回不同数据
- 3分钟完成React-Native热更新
- anaconda 安装opencv3
- Angular入门-语法支持