流类库及其结构
C++为实现数据的输入和输出定义了一个庞大的类库,它包括的类主要有ios,istream,ostream,iostream,ifstream,ofstream,fstream,istrstream,ostrstream,strstream等。其中ios为根基类,它直接派生四个类:输入流类istream、输出流类ostream、文件流基类fstreambase和字符串流基类strstreambase。输入文件流类ifstream同时继承了输入流类和文件流基类(当然对于根基类是间接继承),输出文件流类ofstream同时继承了输出流类和文件流基类,输入字符串流类istrstream同时继承了输入流类和字符串流基类,输出字符串流类ostrstream同时继承了输出流类和字符串流基类,输入输出流类iostream同时继承了输入流类和输出流类,输入输出文件流类fstream同时继承了输入输出流类和文件流基类,输入输出字符串流类strstream同时继承了输入输出流类和字符串流基类。
图1给出了I/O流类之间的继承关系。
其中:
图1 流类库的基本层次结构
其中,ios、istream、ostream和streambuf类构成了C++中iostream输入输出功能的基础。在图10.1中,streambuf类和ios类没有继承关系,它们是组合使用的,streambuf对象作为ios类的成员出现。事实上,ios类提供编程界面和格式特征,而streambuf做实质性的工作。
iostream类库中,streambuf、ios、istream、ostream、iostream、istream_withassign和ostream_withassign这些基本I/O流类和预定义的cin、cout、cerr和clog在iostream.h文件中说明。
filebuf、ifstream、ofstream和fstream在fstream.h中说明。
strstream、istrstream、ostrstream和strstream在strstream.h中说明。
需要注意的是:fstream.h和strstream.h中都包含了iostream.h,所以如果使用标准输入输出(控制台I/O),只要包含iostream.h头文件即可,如果使用fstream或者strstream只要包含相应的fstream.h和strstream.h即可。
在一个程序或一个编译单元(即一个程序文件)中当需要进行标准I/O操作时,则必须包含头文件iostream.h,当需要进行文件I/O操作时,则必须包含头文件fstream.h,同样,当需要进行串I/O操作时,则必须包含头文件strstream.h。在一个程序或编译单元中包含一个头文件的命令格式为“#include<头文件名>”,当然若头文件是用户建立的,则头文件名的两侧不是使用尖括号,而是使用双引号。当系统编译一个C++文件对#include命令进行处理时,是把该命令中指定的文件中的全部内容嵌入到该命令的位置,然后再编译整个C++文件生成相应的目标代码文件。
超实用性的Python零基础入门到进阶视频源码淘宝¥2购买已下架好了,本文到此结束。如果对编程、计算机、程序员方面感兴趣的话,欢迎私信联系我,随时交流!点个