C++ Primer 第8章笔记

C++第二部分:C++标准库

第八章:IO库

8.1 IO类

  • iostream头文件:istream、wistream、ostream、wostream、iostream、wiostream 流操作
  • fstream头文件:ifstream、wifstream、ofstream、wofstream、fstream、wfstream 文件操作
  • sstream头文件:istringstream、wistringstream、ostringstream、wostringstream、stringstream、wstringstream 内存string对象操作

宽字符版本的类型和函数的名字以一个w开始。
**IO类型间的关系:**ifstream和istringstream都继承自istream。ofstream和ostringstream都继承自ostream。
8.1.1 IO对象无拷贝或赋值
8.1.2 条件状态

  • strm::badbit用来指示流已崩溃
  • strm::failbit用来指出一个IO操作失败了
  • strm::eofbit用来指出流到达了文件结束
  • strm::goodbit用来指出流未处于错误状态,此值保证为0
  • s.eof()若流s的eofbit置位,则返回true
  • s.fail()若流s的failbit置位,则返回true
  • s.bad()若流s的badbit置位,则返回true
  • s.good()若流s处于有效状态,则返回true
  • s.clear()将流s中所有条件状态位复位
  • s.clear(flags)根据flags,将流s中对应条件状态位复位
  • s.setstate(flags)根据flags,将流s中对应的条件状态置位
  • s.rdstate()返回s的当前状态

一个流一旦发生错误,其上后续的IO操作多会失败。
确定一个流对象的状态的最简单方法是将它当作一个条件来使用。
8.1.3 管理输出缓冲
**刷新输出缓冲区:**endl:完成换行并刷新缓冲区,flush单纯刷新缓冲区,ends向缓冲区插入一个空字符,然后刷新缓冲区。
**unitbuf操作符:**使用cout << unitbuf;使每次输出操作后都刷新缓冲区,使用cout << nounitbuf;来恢复。
**关联输入和输出流:**当一个输入流被关联到一个输出流时,任何试图从输入流读取数据的操作都会先刷新关联的输出流,标准库将cout和cin关联在一起。
输入流的tie函数有两个重载板本,一个不带参数的,返回指向输出流的指针,无关联对象时返回空指针,另一个接受一个指向ostream的指针,将自己关联到此ostream。
8.2 文件输入输出
新增的成员

  • fstream fstrm;创建一个未绑定的文件流,fstream是头文件fstream中定义的一个类型
  • fstream fstrm(s);创建一个fstream,并打开名为s的文件,s可以是string,也可以是C风格字符串
  • fstream fstrm(s, mode)与前一个构造函数相似,但按指定mode打开文件
  • fstrm.open(s)打开名为s的文件
  • fstrm.close()关闭与fstrm绑定的文件
  • fstrm.is_open()返回一个bool,指出fstrm关联的文件是否打开

8.2.2文件模式

  • in:以只读方式打开
  • out:以写方式打开
  • app:每次写操作前均定位到文件末尾
  • ate:打开文件后立即定位到文件末尾
  • trunc:截断文件
  • binary:以二进制方式进行IO

当我们默认打开一个ofstream时,将以out和trunc打开,文件的内容将被丢弃,使用app模式即可追加。
8.3 string流
string特有操作

  • sstream strm;strm是一个未绑定的stringstream对象,sstream是头文件sstream中定义的一个类型
  • sstream strm(s);strm保存string s的一个拷贝
  • strm.str()返回strm所保存的string的拷贝
  • strm.str(s)将string s拷贝到strm中,返回void
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值