综述
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。