综述

C++的输入/输出设施是由 iostream 库提供的。它是一个利用多继承和虚拟继承实现的面向对象的类层次结构。是作为C++标准库的一部分提供的,它为内置数据类型的输入/输出提供了支持。除此之外,类的设计者还可以通过扩展 iostream 库来读写自定义类型。

标准输入/输出(目标是用户终端)

标准的输入/输出操作是由 istream 和 ostream 类提供的。iostream 类同时从 istream 和 ostream 派生,允许双向输入/输出。我们熟悉的 cin 是 istream 类对象,cout,cerr 是 ostream 类对象。

头文件:#include <iostream>

文件输入/输出

除了对用户终端的读写操作之外 iostream 库还支持对文件的读写。下列三种类类型提供了文件支持:

1. ifstream 从 istream 派生,把一个文件绑到程序上用来输入。
 2. ofstream 从 ostream 派生,把一个文件绑到程序上用来输出。
 3. fstream 从 iostream 派生,把一个文件绑到程序上用来输入和输出。

头文件:#include <fstream>

内存输入/输出

iostream 库还支持内存输入/输出。当流被附着在程序内存中的一个字符串上时,我们可以用 iostream 输入和输出操作符来对它进行读写。C++ stringstream 类是一种十分有用的类,特别是当我们需要在程序中使用字符串和数字数据的时候。可以通过定义下列三种类类型中的一个实例来定义一个 iostream 字符串对象:

1. istringstream 从 istream 派生,从一个字符串中读取数据。
 2. ostringstream 从 ostream 派生,写入到一个字符串中。
 3. stringstream 从 iostream 派生,从字符串中读取或者写入到字符串中。

头文件:#include <sstream>

宽字符的支持

在实践中,iostream 支持两种预定义的字符类型 char 和 wchar_t。通常读写的是 char 型的流。与此互补的是另外一组支持 wchar_t 型的 iostream 对象和类,每个与类对象都加了前缀 w 以便与相应的 char 型区分开。因此,wchar_t 标准输入被命名为 wcin,标准输出为 wcout,以及标准错误 wcerr。然而 char 和 wchar_t 型的 stream 类和类对象所需要的头文件是相同的

1. 标准输入/输出类是 wistream/wostream 和 wiostream。
 2. 文件输入/输出类是 wifstream/wofstream 和 wfstream。
 3. 字符串输入/输出类是 wistringstream/wostringstream 和 wstringstream。