C++标准IO库

本文摘自:《C++ Primer》中文版第四版,第八章——C++标准IO库

• cin(发音为 see-in):读入标准输入的 istream 对象。
• cout(发音为 see-out):写到标准输出的 ostream 对象。
• cerr(发音为 see-err):输出标准错误的 ostream 对象。cerr 常用于程序错误信息。
• >> 操作符,用于从 istream 对象中读入输入。
• << 操作符,用于把输出写到 ostream 对象中。

表 8.1. IO 标准库类型和头文件

HeaderType
iostreamistream 从流中读取
ostream 写到流中去
iostream 对流进行读写;从 istream 和 ostream 派生而来
fstreamifstream 从文件中读取;由 istream 派生而来
ofstream 写到文件中去;由 ostream 派生而来
fstream 读写文件;由 iostream 派生而来
sstreamistringstream 从 string 对象中读取;由 istream 派生而来
ostringstream 写到 string 对象中去;由 ostream 派生而来
stringstream 对 string 对象进行读写;由 iostream 派生而来

图 8.1. 简单的iostream 继承层次


表 8.2. IO 标准库的条件状态

strm::iostate机器相关的整型名,由各个 iostream 类定义,用于定义条件状态
strm::badbitstrm::iostate 类型的值,用于指出被破坏的流
strm::failbitstrm::iostate 类型的值,用于指出失败的 IO 操作
strm::eofbitstrm::iostate 类型的值,用于指出流已经到达文件结束符
s.eof()如果设置了流 s 的 eofbit 值,则该函数返回 true
s.fail()如果设置了流 s 的 failbit 值,则该函数返回 true
s.bad()如果设置了流 s 的 badbit 值,则该函数返回 true
s.good()如果流 s 处于有效状态,则该函数返回 true
s.clear()将流 s 中的所有状态值都重设为有效状态
s.clear(flag)将流 s 中的某个指定条件状态设置为有效。flag 的类型是strm::iostate
s.setstate(flag)给流 s 添加指定条件。flag 的类型是 strm::iostate
s.rdstate()返回流 s 的当前条件,返回值类型为 strm::iostate

1、支持宽字符的类为加上“w”前缀;
2、出于某些原因,标准库类型不允许复制和赋值。所以,只有支持复制的元素类型才能存储在容器里,形参或返回类型也不能为流类型。
3、注意输出缓冲区的刷新;
4、文件流对象在尝试打开新文件时,必须先关闭当前的文件流,且需要调用clear清除该流的状态,以免导致不可预料的bug;
5、打开文件时,要保存文件已存在唯一的方法是显示指定app模式打开;
6、对于fstream对象,以in和out同时打开时,内容不清空。只有out时会被清空;当指定了trunc是无论in都会被清空;
7、ofstream默认是out方式,内容会被清空。故只要是open,建议手动指定模式。

表 8.3 文件模式

in打开文件做读操作
out打开文件做写操作
app在每次写之前找到文件尾
ate打开文件后立即将文件定位在文件尾
trunc打开文件时清空已存在的文件流
binary以二进制模式进行 IO 操作


参考资料:
1、《C++ Primer》中文版第四版,第八章——C++标准IO库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值