15.1.2 流的来源和目标
流这个概念可以应用于任何接受数据或产生数据的对象。因此可以编写基于流的网络类,还可以编写MIDI设备的流式访问。在C++(www.cppentry.com)中,流可以使用3个公共的来源和目标。
您已经看到了很多用户(或控制台)流的例子。控制台输入流允许程序在运行时从用户那里获得输入,因而使得程序具有了交互性。控制台输出流向用户提供反馈和输出结果。
顾名思义,文件流能够从文件系统中读取数据并向文件系统写入数据。文件输入流适用于读取配置数据、读取保存的文件以及批处理基于文件的数据等任务。文件输出流适用于保存状态数据和提供输出等任务。文件流包含了C语言输出函数fprintf()、fwrite()和fputs()的功能,还包含了C语言输入函数fscanf()、fread()和fgets()的功能。
字符串流是将流隐喻应用于字符串类型的例子。使用字符串流的时候,可以像处理其他任何流一样处理字符数据。就字符串流的大部分功能而言,只不过是为string类提供的很多方法能够完成的功能提供了便利的语法。然而,使用流式语法为优化提供了机会,而且比直接使用string类方便得多。字符串流包含了sprintf()和sprintf_s()的功能,以及很多C语言字符串格式化函数的功能。
本节主要讲解控制台流(cin和cout)。本章后面会列举文件流和字符串流的例子。其他类型的流,例如打印机输出和网络I/O等往往和平台相关,因此本书中没有讨论这些流。