目录
C++ IO 类
C++ IO跟 Linux 一样,也是使用缓冲区来提高输入输出的效率,所以在使用的时候也要注意缓冲区这一点。
如上图所示,C++ 中跟输入输出相关的类如下:
- ios_base类:是一个基类,表示流的一般特性,如是否可读取,是二进制流还是文本流等;
- ios类:基于ios_base类,其中包含了一个指向streambuf对象的指针成员;
- streambuf类:为缓冲区提供了内存,并提供了用于填充缓冲区,访问缓冲区内容,刷新缓冲区和管理缓冲区内存的类方法;
- istream类:从ios类派生而来,提供了输入方法;
- ostream类:从ios类派生而来,提供了输出方法;
- iostream类:基于istream和ostream,因此继承了输入方法和输出方法。
C++ 的iostream类库管理了很多细节,例如,包含iostream文件将自动创建 8 个流对象(4 个用于窄字符流, 4 个用于宽字符流):
- cin对象对应标准输入流,wcin类似,但处理的是wchar_t型;
- cout对象对应标准输出流,wcout类似,但处理的是wchar_t型;
- cerr对象对应标准错误流,默认被关联到标准输出,这个流没有被缓冲,wcerr对象类似,但处理的是wchar_t型;
- clog对象也对应标准错误流,默认被关联到标准输出,但是这个流被缓冲,wclog对象类似,但处理的是wchar_t型。
C++ 的输入输出流是支持重定向的,按照功能分的话,C++ I/O 可以分为三类:
- 控制台 I/O:与控制台交互;
- 文件 I/O:操作文件;
- 内核格式化 I/O:有点像 C++ 版本的sprintf功能。