通过将 iostream 库包括进来,程序可以使用许多输入流或输出流。每个流都具有某些源或接收器,如下所示:
标准输入
标准输出
标准错误
文件
字符数组
流可以被限定到输入或输出,或同时具有输入和输出。iostream 库使用两个处理层来实现这些流。
较低层实现了序列,即字符的简单流。这些序列由 streambuf 类或从其派生的类实现。
较高层对序列执行格式化操作。这些格式化操作由 istream 和 ostream 类实现,这两个类将从 streambuf 类派生的类型的对象作为成员。附加类 iostream 用于执行输入和输出的流。
标准输入、输出和错误由从类 istream 或 ostream 派生的特殊类对象处理。
分别从 istream、ostream 和 iostream 派生的 ifstream、ofstream 和 fstream 类用于处理文件的输入和输出。
分别从 istream、ostream 和 iostream 派生的 istrstream、ostrstream 和 strstream 类用于处理字符数组的输入和输出。
打开输入或输出流时,要创建其中一种类型的对象,并将流的 streambuf 成员与设备或文件关联。通常通过流构造函数执行此关联,因此不用直接使用 streambuf。iostream 库为标准输入、标准输出和错误输出预定义了流对象,因此不必为这些流创建自己的对象。
可以使用运算符或 iostream 成员函数将数据插入流(输出)或从流(输入)提取数据,以及控制插入或提取的数据的格式。
如果要插入和提取新的数据类型(其中一个类),通常需要重载插入和提取运算符。