2012-08-27 72 views
33

我一直听到关于流,更具体的文件流。C++:什么是流

那么它们是什么?

它在内存中有位置吗?

它是否包含数据?

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

任何帮助,将不胜感激

回答

39

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

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

+2

因此它就像一条从源头流向目的地的“河流”。而河流本身就是河流 –

+0

从概念上讲,你可以这样说。 –

+1

所以我可以考虑一个流作为从控制台带来的数据(例如)数据从变音杆 –

8

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

2

文件系统被设计为具有各种各样的设备,包括终端,磁盘驱动器,磁带驱动器等。尽管每个设备不同的是,文件系统将每个成逻辑设备称为流工作。流是独立于设备的,因此可以使用相同的函数来写入磁盘文件和磁带文件。在更多技术术语中,流提供了正在使用的编程器和实际器件之间的抽象。

5

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

基本上流是如果两个类型1.Text流2.Binary流

文本流:这是序列字符排成一行,每行都以新行结尾(unix)。

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

+0

我在2012年问过这个问题:“D很奇怪,现在看它仍然受到关注。谢谢 –

+0

这个答案更容易理解! –