15.1.1 流的含义
第1章将cout流比喻为与数据对应的洗衣滑槽。把一些变量丢到流中,这些变量就会写到用户屏幕上,即控制台(console)上。更一般地,所有的流都可以看做是数据滑槽。流之间的区别体现在方向以及关联的来源和目的地。例如,您已经熟悉的cout流是一个输出流,因此这个流的方向是"流出"。这个流将数据写入控制台,因此这个流关联的目的地是"控制台"。还有一个称为cin的标准流,这个流接受来自用户的输入。这个流的方向为"流入",关联的来源为"控制台"。cout和cin都是C++(www.cppentry.com)在std名称空间中预定义的流实例。表15-1简要地描述了所有预定义的流。后面一节会解释缓冲流和非缓冲流之间的区别。
表 15-1
|
流< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
说 明 |
|
cin |
输入流,从“输入控制台”中读取数据 |
|
cout |
缓冲的输出流,向“输出控制台”写入数据 |
|
cerr |
非缓冲的输出流,向“错误控制台”写入数据,
“错误控制台”通常等同于“输出控制台” |
|
clog |
cerr的缓冲版本 |
注意,图形用户界面应用程序通常没有一个控制台,即,如果向cout写入一些数据,用户无法看到。如果您在编写一个库,那么绝对不要假定存在cout、cin、cerr和clog,因为不可能知道您编写的库会应用在控制台应用程序还是GUI应用程序。
所有输入流都有一个关联的来源。所有输出流都有一个关联的目标。
有关流的另一个要点是流不仅包含数据,还包含一个称为当前位置(current position)的数据。当前位置指的是流将要进行下一次读或写操作的位置。