我一直听说流,更具体地说是文件流。
那么它们是什么?
它是在内存中具有位置的东西吗?
它是包含数据的东西吗?
它只是文件和对象之间的连接吗?
我一直听说流,更具体地说是文件流。
那么它们是什么?
它是在内存中具有位置的东西吗?
它是包含数据的东西吗?
它只是文件和对象之间的连接吗?
流(stream)是一个抽象概念,它允许您发送或接收数量未知的字节。这个比喻就像一条水流。您按需获取数据,或根据需要发送数据。相对于例如有固定长度的数组而言,流是没有固定长度的。
使用流的例子包括读写文件、在外部连接中接收或发送数据。但是,“流”这个术语是泛指的,并不能说明具体的实现细节。
IOStreams是一个前端接口(std::istream
,std::ostream
),用于定义输入和输出函数。流还存储格式选项,例如用于整数输出的进制,并保存用于各种自定义的std::locale
对象。它们最重要的组件是指向std::streambuf
的指针,该指针定义如何访问一系列字符,例如文件、字符串、屏幕上的区域等。特别为文件和字符串提供了特殊的流缓冲区,并提供从流基类派生的类以便更容易创建。描述IOStreams库的所有功能几乎可以填满一本书:在C++ 2003中,大约有一半的库部分专门介绍与流相关的功能。
流是将文件与程序连接并在两个方向上维护数据流的线性队列。此处的源可以是任何文件、I/O设备、硬盘、CD/DVD等。
基本上,流分为两种类型:1.文本流 2.二进制流
文本流:它是一系列按行排列的字符,并且每行以换行符(unix)结尾。
二进制流:它是计算机主存储器中实际编码的数据,没有任何修改。
文件系统旨在与各种设备一起使用,包括终端、磁盘驱动器、磁带驱动器等。尽管每个设备都不同,但文件系统将每个设备转换为称为流的逻辑设备。流是独立于设备的,因此可以使用相同的函数来编写磁盘文件和磁带文件。更确切地说,流提供了程序员和实际使用的设备之间的抽象。