用cin输入
来源:互联网 发布:java path设置方法技巧 编辑:程序博客网 时间:2024/06/05 14:20
用cin输入
cin从输入流中抽取字符,需要转换为相应的类型
可以将hex,oct,dec与cin一起使用
cin>>如何检查输入
cin>>
抽取字符时,会跳过空白字符(空格,制表符,换行符)
也就是说,'\n'
、空格啥的不会读取到
如果类型不匹配,cin>>
停止抽取
流状态
cin
、cout
均包含一个描述流状态的数据成员。
流状态由三个元素组成:eofbit
,badbit
,failbit
三个全为0
时,说明一切顺利
流状态详情:C++PrimerPlus page-756
设置状态
clear()
与setstate()
可以设置状态,但有区别:
clear(0)
或clear(goodbit)
将所有三个状态设置为0
clear(eofbit)
设置eofbit
,其他状态则被清除
setstate(eofbit)
设置eofbit
,其他状态不变I/O和异常
cin.exceptions()
有两个版本:iostate exceptions() const;
void exceptions(iostate except);
第一个版本返回流状态的一个bitmask,可以通过这个bitmask判断属于那种错误
第二个版本中参数except
,比如设置为eofbit
,则当输入时eofbit
被设置后,将会触发ios_base::failure
异常。默认为goodbit
,也就是说,不设置的话,即使有输入错误,也不会触发ios_base::failure
异常
流状态的影响
如果存在
cin
失败,会导致后面的输入与输出被关闭,知道标记被清除
cin.clear()
可以清除标记,将标记变为goodbit
但是导致错误的输入还保留在输入流里
可以while
循环cin.get()
读取直到'\n'
也可以cin.ignore()
做到同样的效果其他
istream
类方法字符输入
istream & get(char & ch)
读取下一个输入的字符,包括空白字符('\n'
,空格,制表符),返回istream
类,说明可以这样:
cin.get(ch1).get(ch2) >> ch3 ;
遇到EOF,返回false
int get(void)
,获取一个字符,将其转化为整型,并返回
遇到EOF,返回EOF
字符串输入
函数 区别 getline(char *, int ) 分界符默认为'\n'
getline(char *, int ,char ) 最后一个参数标志分界符| get(char *, int ) 分界符默认为'\n'
get(char *, int ,char ) 最后一个参数标志分界符|getline()
与get()
的区别:- 区别一:
get()
函数将'\n'
留在输入流中
getline()
函数读取'\n'
,然后扔掉 - 区别二:
超过最大字符数时:
getline()
使用setstate()
设置failbit
get()
不会设置,可以用peek()
了解 - 区别三:
输入空行时:
getline()
读取'\n'
然后丢掉,字符串为空
get()
设置failbit
其他istream方法
read()
读取指定数目的字节,存储在指定位置。不会再末尾添上'\n'
。通常与ostream
的write()
结合使用,用于文件的输入输出peek()
返回输入流中下一个字符,但不会抽取输入流中的字符gcount()
返回最后一个非格式化读取字符串的函数所读取的字符数目putback()
将一个字符放回至输入流
0 0
- 用cin输入
- C++ 21----- 用cin输入
- 输入cin>>
- 用 cin 输入整数死循环问题
- c++用cin和getline实现输入回车结束输入
- C++输入cin详解
- C++输入cin详解
- C++输入cin详解
- C++ 输入cin详解
- cin >> 输入操作符
- C++输入cin详解
- cin输入操作处理
- C++输入cin详解
- C++输入cin详解
- C++输入cin详解
- cin>>如何检查输入
- 保证cin输入合法
- c++ cin输入格式
- 使用cout进行输出
- 结合彩信的发送过程介绍HTTP
- openCV中的人脸识别API
- hibernate 主键生成策略
- MySQL数据库基础
- 用cin输入
- git配置ssh密钥
- ACM中关于最大值的选取
- ReactJS读书笔记五:DOM操作
- LeetCode Valid Sudoku
- 文件输入输出(C++)
- AsyncTask错误之“IllegalStateException:cannot execute task:...(a task can be executed only once)”
- C语言--函数指针和回调函数
- CentOS 没有iptables了,怎么办?