- IO对象无拷贝或赋值,通常以引用形式传递。
IO库条件状态 |
|
strm::iostate |
一种机器相关的类型,提供了表达条件状态的完整功能 |
strm::badbit |
用来指出流已经崩溃 |
strm::failbit |
用来指出一个IO操作失败了 |
strm::eofbit |
用来指出流到达了文件结束 |
strm::goodbit |
用来指出流未处于错误状态,此值保证为0 |
s.eof() |
若s的eofbit置位,返回true |
s.fail() |
若s的failbit或badbit置位,返回true |
s.bad() |
若s的badbit置位,返回true |
s.good() |
s处于有效状态,则返回true |
s.clear() |
s的所有条件状态位复位,返回void |
s.clear(flags) |
将给定的标志位复位,返回void |
s.setstate(flags) |
将流中对应条件状态为置位,返回void |
s.rdstate() |
返回流s的当前状态,返回值类型为strm::iostate |
缓冲刷新(数据真正写到输出设备或文件)的原因:
- 程序正常结束
- 缓冲区满时
- 操纵符endl、flush、ends
- 操纵符unitbuf设置流的内部状态,每次输出后都刷新(cout<<unitbuf; cout<<nonunitbuf;)
- 当读写被关联的流时,被关联的流会刷新(读cin或写cerr都会导致cout刷新)
关联—两个重载版本
cin.tie() 返回指向输出流的指针,如未关联则返回空指针;
cin.tie(&cout) 将cin关联到cout
fstream继承自iostream,定义时可以打开名为s的文件
除了<< 和 >> ,还可以open close getline
in以读模式打开
out 以写模式打开
app 每次写操作均定位到文件末尾
ate打开文件后立即定位到文件末尾
trunk 截断文件
binary 以二进制方式打开IO
默认out模式打开文件,且截断文件;如不想清空文件内容,需要同时指定app
string流
sstream strm(s); //explicit的
strm.str(); //返回所保存的string拷贝
strm.str(s); //s拷贝到strm中
某些工作是对整行进行处理,而其他一些工作是处理行内某个单词时,通常可以使用istringstream
当我们逐步构造输出希望最后一起打印时,ostringstream很有用。