C ++:什么是流

时间:2012-08-27 15:58:01

标签: c++ stream filestream fstream

我听说过流,更具体地说是文件流。

那他们是什么?

它是否在内存中有位置?

是否包含数据?

它只是文件和对象之间的连接吗?

任何帮助将不胜感激

4 个答案:

答案 0 :(得分:45)

术语流是一种构造的抽象,允许您发送或接收未知数量的字节。这个比喻是一股水流。您可以随时获取数据,也可以根据需要发送数据。例如,将其与数组进行对比,该数组具有固定的已知长度。

使用流的示例包括读取和写入文件,通过外部连接接收或发送数据。但是,术语 stream 是通用的,并没有说明具体的实现。

答案 1 :(得分:9)

IOStream是用于定义输入和输出函数的前端接口(std::istreamstd::ostream)。流还存储格式化选项,例如,用于整数输出的基础,并保持std::locale对象用于所有类型的定制。它们最重要的组件是指向std::streambuf的指针,它定义了如何访问字符序列,例如文件,字符串,屏幕上的区域等。特别是对于文件和字符串,提供了特殊的流缓冲区并且提供了从流基类派生的类以便于创建。描述IOStreams库的所有功能几乎可以填满整本书:在C ++ 2003中,大约一半的库部分专门用于流相关功能。

答案 2 :(得分:6)

Stream是一个线性队列,它将文件连接到程序并保持两个方向的数据流。这里的源是任何文件,I / O设备,硬盘,CD / DVD等。

基本上流是两个类型1.Text Stream 2.Binary stream

文本流:它是一行字符排列,每行以新行(unix)结束。

二进制流:它是在计算机的主存储器内部编码的数据,没有任何修改。

答案 3 :(得分:4)

文件系统旨在与各种设备配合使用,包括终端,磁盘驱动器,磁带驱动器等。即使每个设备都不同,文件系统也会将每个设备转换为逻辑设备,称为流。流与设备无关,因此可以使用相同的功能来写入磁盘文件和磁带文件。在更多技术术语中,流提供了程序员和正在使用的实际设备之间的抽象。