博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 中的流操作
阅读量:4223 次
发布时间:2019-05-26

本文共 912 字,大约阅读时间需要 3 分钟。

C++中IO操作都可以用流对象来实现,一般有三种流对象:

1)控制台流对象: istream, ostream, iostream

2)文件流对象: fstream, ifstream, ofstream

3)字符串流对象: stringstream, istringstream, ostringstream

以上三种流类的读写都是以char 类型组成的流,对于wchar_t ,C++中定义了相应的宽字符流对象

流对象不支持复制操作,因此不能保存在vector 对象中

 

流对象的条件状态:由于记录读写过程中是否发生错误,其类型为iostate, 常用的有三种取值:

badbit: 系统发生不可修复错误

failbit: 此流错误可修复

eofbit: 达到文件末尾

 

流对象定义的几个成员函数用于获取或设置其条件状态:

s.bad(), s.fail(), s.eof(), 若以上三个函数返回值都为false, s.good()返回true, 此外

s.clear(): 将条件重设为有效状态

s.setstate(): 设置某个条件状态,以表示某个问题的发生

s.rdstate(): 返回一个 iostate 类型值,该值对应于流当前的整个条件状态

 

每个流对象管理一个输出缓冲区,执行输出操作时先将数据输出到输出缓冲区中,要刷新缓冲区才能将数据写入到真是的输出设备或文件,有以下几种方法可以刷新缓冲区:

1. 程序正常结束。作为 main 返回工作的一部分,将清空所有输出缓冲区。

2. 在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。

3. 用操纵符显式地刷新缓冲区,例如行结束符 endl。

4. 在每次输出操作执行完后,用 unitbuf 操作符设置流的内部状态,从而清空缓冲区。

5. 可将输出流与输入流关联(tie)起来。在这种情况下,在读输入流时将刷新其关联的输出缓冲区(常用在交互式系统下,确保给用户的提示在读取用户的输入之前都已输出)。

转:http://blog.csdn.net/lily854212198/article/details/10826553

你可能感兴趣的文章
从代码恐惧到开发大牛:开发者“10倍提升”宝典
查看>>
吴恩达机器学习课程:完全用Python完成,可以的!(附代码)
查看>>
狂破11项记录,谷歌年度最强NLP论文到底强在哪里?
查看>>
AI“重造”麻省理工学院!今宣布投资10亿美元成立全新计算学院,近70年来最大结构调整...
查看>>
波音公司探索飞行AI,模拟人类大脑制造芯片!
查看>>
清华大学与MIT合作推出数据科学与信息技术「微硕士」学位
查看>>
信阳新闻网:《观察+思考+努力=创新——访南京大数据研究院院长刘鹏》
查看>>
广东电信20多位经理到访云创参观交流
查看>>
秦淮区科协主席付煜一行莅临云创调研指导
查看>>
广东省民营企业合作交流协会会长谭铭卓一行到访
查看>>
云创大数据亮相2017世界物联网博览会,六因子环境监测仪等引关注热潮
查看>>
云创冬日紫金山踏雪游记
查看>>
西安思源学院电子信息工程学院院长张卫钢一行到访
查看>>
邀请函|欢迎参加2019云创大数据实验平台金融类/电子商务类/数学统计类院校各省总代理招募大会!...
查看>>
云创大数据的2018年!
查看>>
【回顾】云创大数据地震事业部成立
查看>>
全国高校(高职)大数据师资培训班圆满落幕,200多名老师抢先“尝鲜”!
查看>>
【回顾】云创大数据教育事业部成立
查看>>
云创大数据与江苏城市职业学院共建实习实训就业基地!
查看>>
刘鹏教授为江苏移动大数据和网络部门作报告
查看>>