Chapter 8: The IO Library
The IO Library
从流中读取和写入的IO操作
IO类
- iostream: 读写流的基本操作的头文件
- isteam, wistream: 从流中读取
- ostream, wostream: 向流中写入
- iostream, wiostream: 读写流
- fstream: 读写命名文件的类型的头文件
- ifstream, wifstream: 从文件中读取数据
- ofstream, wofstream: 向文件中写入数据
- fstream, wfstream: 读写文件
- sstream: 读写内存string对象的类型头文件
- istringstream, wistringstream: 从string读取数据
- ostringstream, wostringstream: 向string写入数据
- stringstream, wstringstream: 读写string
不能拷贝或者对IO对象赋值,IO操作的函数通常以引用的方式传递和返回流。读写IO对象会改变其状态,因此引用不能是const的
- strm::iostate: 表达条件状态的完整功能
- strm::badbit: 流已崩溃
- strm::failbit: IO操作失败
- strm::eofbit: 流达到了文件末尾
- strm::gootbit: 用来指出流未出错,此值保证为0
- s.eof()/fail()/bad()/good(): Bool
- s.clear(): 条件状态复位
- s.clear(flags) flags: strm::iostate: 将对应状态复位
- s.setstate(flags): 将流中对应的状态位,置位
- s.rdstate(): 返回流s的当前条件状态
缓冲区刷新
- 程序正常结束
- 缓冲区满
- 使用endl操作符
- unitbuf -> cerr设置unitbuf -> cerr刷新缓冲区。cout << unitbuf;
- 流关联。读cin和写cerr刷新 -> 关联到cout的缓冲区刷新
文件的输入输出
ifsream, ofstream, fstream
- fstream fstrm; 未绑定的文件流
- fstream fstrm(s); 打开名为s的文件,s可以是string类型,或者是一个指向C风格字符串的指针
- fstream fstrn(s, mode): 按照指定mode打开文件
- fstrm.open(s), fstrm.close(), fstrm.is_open()
fstream作为子类,可以替代iostream&。如果定义了一个空文件流obj,可以随后调用open将其与文件关联起来。
文件模式
- in: 只读
- out: 写
- app: 每次写操作前均定位到文件末尾,只要trunc没被设定
- ate: 代开文件后立即定位到文件末尾
- trunc: 截断文件,只有当out被设定时才能设定
- binary: 以二进制方式进行IO
string流
istringstream, ostringstream, stringstream
- sstream strm;
- sstream strm(s); 保存string s 的一个拷贝
- strm.str() 返回strm所保存的string的拷贝
- strn.str(s) 将string s拷贝到strm中,返回void
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ZuowangDev's Blog!