notes/ch08.md
istream对象,从标准输入读取数据。ostream对象,向标准输出写入数据。ostream对象,向标准错误写入消息。istream对象中读取输入数据。ostream对象中写入输出数据。istream对象中读取一行数据,存入到一个给定的string对象中。iostream头文件:从标准流中读写数据,istream、ostream等。fstream头文件:从文件中读写数据,ifstream、ofstream等。sstream头文件:从字符串中读写数据,istringstream、ostringstreamconst的。| 状态 | 解释 |
|---|---|
strm:iostate | 是一种机器无关的类型,提供了表达条件状态的完整功能 |
strm:badbit | 用来指出流已经崩溃 |
strm:failbit | 用来指出一个IO操作失败了 |
strm:eofbit | 用来指出流到达了文件结束 |
strm:goodbit | 用来指出流未处于错误状态,此值保证为零 |
s.eof() | 若流s的eofbit置位,则返回true |
s.fail() | 若流s的failbit置位,则返回true |
s.bad() | 若流s的badbit置位,则返回true |
s.good() | 若流s处于有效状态,则返回true |
s.clear() | 将流s中所有条件状态位复位,将流的状态设置成有效,返回void |
s.clear(flags) | 将流s中指定的条件状态位复位,返回void |
s.setstate(flags) | 根据给定的标志位,将流s中对应的条件状态位置位,返回void |
s.rdstate() | 返回流s的当前条件状态,返回值类型为strm::iostate |
上表中,strm是一种IO类型,(如istream), s是一个流对象。
endl:输出一个换行符并刷新缓冲区。flush:刷新流,单不添加任何字符。ends:在缓冲区插入空字符null,然后刷新。unitbuf:告诉流接下来每次操作之后都要进行一次flush操作。nounitbuf:回到正常的缓冲方式。fstream定义了三个类型来支持文件IO:
ifstream从一个给定文件读取数据。ofstream向一个给定文件写入数据。fstream可以读写给定文件。| 操作 | 解释 |
|---|---|
fstream fstrm; | 创建一个未绑定的文件流。 |
fstream fstrm(s); | 创建一个文件流,并打开名为s的文件,s可以是string也可以是char指针 |
fstream fstrm(s, mode); | 与前一个构造函数类似,但按指定mode打开文件 |
fstrm.open(s) | 打开名为s的文件,并和fstrm绑定 |
fstrm.close() | 关闭和fstrm绑定的文件 |
fstrm.is_open() | 返回一个bool值,指出与fstrm关联的文件是否成功打开且尚未关闭 |
上表中,fstream是头文件fstream中定义的一个类型,fstrm是一个文件流对象。
| 文件模式 | 解释 |
|---|---|
in | 以读的方式打开 |
out | 以写的方式打开 |
app | 每次写操作前均定位到文件末尾 |
ate | 打开文件后立即定位到文件末尾 |
trunc | 截断文件 |
binary | 以二进制方式进行IO操作。 |
sstream定义了三个类型来支持内存IO:
istringstream从string读取数据。ostringstream向string写入数据。stringstream可以读写给定string。| 操作 | 解释 |
|---|---|
sstream strm | 定义一个未绑定的stringstream对象 |
sstream strm(s) | 用s初始化对象 |
strm.str() | 返回strm所保存的string的拷贝 |
strm.str(s) | 将s拷贝到strm中,返回void |
上表中sstream是头文件sstream中任意一个类型。s是一个string。