C++中的cin函数和异常的来源(failbit)与处理(clear)
来源:互联网 发布:yum update 卡住 编辑:程序博客网 时间:2024/06/07 02:40
cin小知识点
可以将hex,oct,dec控制符与cin一起使用,来指定输入解释为16,8,10进制格式。
例如:下列语句可以将12或0x12解释为16进制的12或10进制的18,将ff(FF)解释为10进制的255.
cin>>hex;
cin>>机制:
跳过空白(空格,换行符,制表符),直接在输入流中抽取非空白字符。
cin的成员函数
cin.get()与cin.getline()
具体内容请看C++中cin和cout中不会被注意的细节。
这里解释一下第3个参数——分界符。就是指当遇到分界符时,输入将终止,不写的话默认为换行符(‘\n’)。分界符可以是任意字符(如‘5’,‘q’等)。
cin.ignore()
istream& ignore(int = 1 , int = EOF);
将读取并丢弃接下来的1(第一个参数)个字符或直到达到第一个文件结尾符号(第二个参数)。
第一个参数指定要读取的最大字符数;另一个用作输入分界符。cin.ignore(255,'\n');//将读取并丢弃接下来的255个字符或直到达到第一个换行符。
cin.read()
不会在输入后加上空值字符,与ostream write()函数结合使用,返回类型为istream&,(大部分情况下,也就是cin),可以进行拼接。
char name[123];char book[100];cin.read(name,123).read(book,100);//就是读123个和100个字符(而不是122和99加上‘\0’)
cin.peek()
(peek偷看)返回输入中的下一个字符,但不抽取输入流中的字符。即查看下一个字符。
char ch;ch = cin.peek();
cin.gcount()
返回最后一个非格式化收取方法读取的字符数。(格式化就是用cin>>抽取的字符,非格式化就是像cin.getline()等方法读取的字符)。等价于cin.get+strlen函数的联合,速度没相比较来看也慢。
int a = cin.gcount();
cin.putback()
将一个字符插入到输入字符串中的最前面。
peek()等价于get(ch)+putback(ch)。
char ch = 'a';cin.putback(ch);
cin中的异常与清除
出现异常会怎么样
什么时候会出现异常
流状态由3个ios_base元素组成:eofbit,badbit,failbit。每个元素都是一位,为1(设置)或0(清除)。
当cin操作到达文件尾部时,它将设置eofbit;
当cin操作未能读取到预期的字符时,它将设置failbit;
一些无法诊断的失败破坏流时,,它将设置badbit。
怎么检查
用cin中的成员与成员函数(使用成员函数时前面要加cin.)
怎么清除(设置状态)
clear()与setstate()。
clear()将状态设置为他的参数。默认为0(就是无参数),将清除全部3个状态位。
cin.clear();//将清除全部3个状态位,时cin可以重新使用cin.clear(eofbit);//eofbit位将被设置(1),另外两个状态被清除
setstate()只影响其参数中已设置的位cin.setstate(eofbit);//设置eofbit位,而不影响其他位
- C++中的cin函数和异常的来源(failbit)与处理(clear)
- 学习札记:cin.clear(istream::failbit)
- c++ primer(中文版第四版)第8章关于cin.clear(istream::failbit)的一个误区
- 输入输出流的细节(cin.clear,cin.sync(),cout的一些细节处理)
- cin.clear()、cin.sync()和cin.ignor()的用法
- cin.clear()、cin.sync()和cin.ignor()的用法
- cin.clear()、cin.sync()和cin.ignor()的用法
- cin.clear()、cin.sync()和cin.ignor()的用法
- C++中的异常处理(一)——C和C++中异常处理的区别
- cin学习--------cin.get()和cin.getline(),cin.clear(),cin.sync()等的用法.
- cin.clear()与cin.sync()
- cin.clear()和cin.sync()
- cin.clear和cin.sync
- cin.clear()和cin.sync
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法(C++)
- cin.clear()与cin.sync()是有顺序的
- IO:cin.clear() 和 cin.sync() 的区别
- in.clear()、cin.sync()和cin.ignor()的用法
- 基于概率论的分类方法:朴素贝叶斯
- python读写文件
- 《从零开始写Javaweb框架》知识点--dispatcherServlet
- 并发编程(12)-Master-Worker
- M2 | JDBC—jdbc查询:select * from 表名
- C++中的cin函数和异常的来源(failbit)与处理(clear)
- 兼容IE老版本的动态增加例子
- Mybatis逆向工程Generator
- 结合协同过滤和个性化AGENT的增强推荐(续)
- 《Web接口开发与自动化测试基于Python语言》--第14章
- HDOJ2070 Fibbonacci Number
- 高软实验七报告
- 纯CSS模态窗口实现炫酷动画效果(部分代码)
- C++基础(和函数有关1)1