本文章根据《C++ Primer》总结而来
IO类型在三个独立的头文件中定义:
- iostream定义读写控制窗口的类型
- fstream定义读写已命名文件的类型
- sstream定义读写存储在内存中的string对象
IO对象不可复制或赋值
1、只有支持复制的元素类型可以存储在vector或其他容器里,所以流对象是不能够存储在vector或其他容器里的。
2、形参或返回类型不能为流类型。如果要传递或返回IO对象,则必须传思或返回指向该对象的指针或引用。
条件状态
所有流对象都包含一个条件状态成员,该成员由setstate和clear操作管理。
badbit标志着系统级的故障,如无法恢复的读写错误。
failbit导致的问题通常是可以修正的。
efobit是在遇到文件结束符时设置的。
检查流状态最简单的方法是检查其真值。
if(cin) {
...} //直接检查流状态
while(cin >> word) {
...} //检测条件表达式返回的流
输出缓冲区管理
每个IO对象管理一个缓冲区,用于存储程序读写的数据。
输出缓冲区的刷新
- endl操纵符–输出一个换行符并刷新缓冲区
- flush操纵符–不在输出中添加任何字符并刷新缓冲区
- ends操纵符–插入空字符null并刷新缓冲区
- unitbuf操纵符–在每次执行完写操作都刷新流
- nounitbuf操纵符–将流恢复为正常使用的,由系统管理的缓冲区刷新方式
cout << unitbuf << "first" <<