C++中的IO库概述及操作笔记
C++包括两类IO库,一种是基于流形式的IO库,另一种是C风格的IO函数库,下面我会分别来阐述,重点还是放在C++的流形式IO上。
IO类
IO类继承关系
基于流的输入和输出围绕抽象的输入输出设备组织而成,这些抽象输入输出设备包括控制台窗口,文件和内存中的string对象,并且这些类都是模板化的,类的继承形式如下:
C++的IO类继承架构图
在上面的继承关系图中, ios_base是接口类,主要管理格式符号和输入输出异常,通常我们不对其进行直接操作,我们需要使用基类时也是使用 basic_ios,用其来管理任意的流操作。不过我们在日常使用中,不会直接使用上图中的类名,而是通过了别名来进行调用,别名的用法如下代码所示,其中以w开头的都是宽字符类型使用的。在IO流的使用中, 一定要注意的是不能够使用拷贝构造和赋值语句,因为在基类中这些函数就已经被私有化了。还有两个库iomanip和stdiostream需要关注,前者声明了格式化IO的一些操作,后者用于混合使用C和C++的IO机制。
/* Defined in header <ios> */
typedef basic_ios<char> ios;
typedef basic_ios<wchar_t> wios;
/* Defined in header <streambuf> */
typedef basic_streambuf<char> streambuf;
typedef basic_streambuf<wchar_t> wstreambuf;
/* Defined in header <fstream> */
typedef basic_filebuf<char> filebuf;
typedef basic_filebuf<wchar_t> wfilebuf;
/* Defined in header <sstream> */
typedef basic_stringbuf<char> stringbuf;
typedef basic_stringbuf<wchar_t> wstringbuf;
/* Defined in header <istream> */
typedef basic_istream<char> istream;
typedef basic_istream<wchar_t> wistream;
/* Defined in header <ostream> */
typedef basic_ostream<char> ostream;
typedef basic_ostream<wchar_t> wostream;
/* Defined in header <istream> */
typedef basic_iostream<char> iostream;
typedef basic_iostream<wchar_t> wiostream;
/* Defined in header <fstream> */
typedef basic_ifstream<