IO
设备IO iostream头文件fstream头文件 内存IO sstream头文件iostream头文件
istream, wistream 从流读取ostream, wostream 向流写入iostream, wiostream 读写另外两个有类似的结构,三者之间存在继承关系
IO对象作为形参或返回类型时,通常使用非const引用类型,因为:
IO对象不允许拷贝读写一个IO对象会改变其状态,因此不能是conststrm::iostate 是一种类型,用来表达流的状态,支持位运算
表示四种不同的流状态,分别是iostate中的某一位
strm::badbit 表示流崩溃strm::failbit 表示IO操作失败strm::eofbit 表示到达文件尾strm::goodbit 表示流未出错获取对应位的状态
s.eof()s.fail()s.bad()s.good()对于前三个来说,若对应位被置位,则返回true 对于good()来说,若流处于有效状态,则返回true
复位failbit和badbit,其他位不变
while( cin>>num ){}while循环检查>>表达式返回的流的状态,流保持有效状态时,条件为真
int num; cin >> num;期望读入一个整数,若输入“Boo”,遇到字符B时流就进入了错误状态,后面的输入都会失效
每个输出流都管理一个缓冲区, 用来保存程序读写的数据
os<<"xxx";字符串有可能立即打印,也有可能被保存到缓冲区随后打印
下列情况下,缓冲区将被强制刷新
程序结束缓冲区满endl或其它操纵符os<<unitbuf,设置后的流不再缓冲,直接输出关联流 endl 插入换行符并刷新缓冲区ends 插入空字符并刷新缓冲区flush 刷新缓冲区标准库中的cin和cout是关联在一起的,使用cin时将导致cout的缓冲区被刷新
可以使用tie函数设定关联
