一、IO类
IO库类型和头文件
由于ifstream 和istringstream都继承自istream。因此我们可以像使用istream对象一样来使用ifstream和istringstram对象。
(继承:程序设计功能,令一个类型可以从另一个类型继承接口。)
eg: ostringstream out1;
string test(4,‘r’);
out1 << test <<endl; //可以向ostringstream对象写入string数据
IO对象无拷贝或赋值
注意:因为我们不能对IO对象进行拷贝或者赋值操作
因此以下操作一定要避免
1. 将流类型设置为形参或者返回类型
2.传递和返回流的引用不能是const的(读写IO对象就会改变其状态)
条件状态
定义:可以被任何流类使用的一组标志和函数,用来指定给定流是否可用。
IO库条件状态
输出缓冲区
每个输出流都管理一个缓冲区,用来保存程序读写的数据。
eg: os << "ok";
文本字符串可能立即打印出来,但也有可能被操作系统保存在缓冲区内,随后再打印。
好处:设备的写操作很费时,如果操作系统将多个输出操作组合为一个单一的设备写操作可以带来很大的性能提升。
刷新输出缓冲区的操作
cout << "hi" << endl; //输出一个hi 换行 后刷新
cout << "hi" << flush;//输出 “hi” 后刷新
cout << "hi" << ends;//输出 “hi” 空字符 后刷新
unitbuf
执行cout << unitbuf 所有输出操作后都会立即刷新缓冲区
执行cout << nounitbuf 回到正常的缓冲方式