第八章: IO库
一、IO类
1、iostream定义了读写流的基本类型,fstream定义了读写命名文件的类型,sstream定义了读写内存string对象的类型
2、不能拷贝IO对象,因此不能将形参或返回类型设置为流类型:通常以引用方式传递和方回流
3、读写一个IO对象会改变其状态,因此传递和返回的引用不能是const的
4、通常在使用一个流之前应该检查它是否处于良好状态
5、管理输出缓冲
- 默认情况下,cin和cerr都关联到cout,因此,读cin或写cerr都会导致cout的缓冲区被刷新
cout << "hi!" << end; //输出hi和一个换行符,然后刷新缓冲区 cout << "hi!" << flush; //输出hi,刷新缓冲区,不附加任何额外字符 cout << "hi!" << ends; //输出hi和一个空字符,刷新缓冲区
二、文件输入输出
1、ifstream从一个给定文件读取数据,ofstream向一个给定文件写入数据, fstream可以读写给定文件
2、打开文件:fstream fstrm(s, mode);按mode方式打开文件
in //以读方式打开 out //以写方式打开 app //每次写操作前定位到文件尾 ate //打开文件后立即定位到文件尾 trunc //截断文件 binary //二进制方式进行IO
- 与ifstream关联的文件默认以in模式打开;与ofstream关联的文件默认以out模式打开;与fstream关联的文件默认以in和out模式打开
- 默认情况下,即使没有指定trunc,以out模式打开的文件也会被截断
- 要最佳模式必须自己指定app模式才可以追加写(ofstream::out | ofstream::app)
三、string流:可以向string写入数据,从string读取数据
- istringstream:从string读取数据
- ostringstream:向string写入数据
- 我们将一个istringstream与刚刚读取的文本行进行绑定,就可以在此istringsteam上使用输入运算符>>来读取当前记录的每个元素