什么是 C++ 中的流?

What is a stream in C++?

提问人:Mohamed Ahmed Nabil 提问时间:8/27/2012 最后编辑:Peter MortensenMohamed Ahmed Nabil 更新时间:1/2/2021 访问量:40221

问:

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

那么它们是什么?

它是在内存中占有一席之地的东西吗?

它包含数据吗?

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

C++ 文件流 Fstream

评论

0赞 M-J 10/23/2018
作为一个在某个时候也不理解这一点的人,现在我在这里添加了一个答案:stackoverflow.com/a/52936291/3933131 希望帮助一些人。请注意,它主要是用 C 语言解释的,这就是为什么我没有在这里添加它的原因,但是,我认为如果您仔细阅读它,您仍然可以很好地了解它。

答:

60赞 Jonathan Wood 8/28/2012 #1

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

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

评论

4赞 Mohamed Ahmed Nabil 8/28/2012
因此,它就像一条从源头流向目的地的“河流”。溪流就是河流本身
1赞 Mohamed Ahmed Nabil 8/28/2012
因此,我可以将流视为将(例如)数据从控制台带到变量的东西
1赞 Jonathan Wood 8/28/2012
什么是“卡在里面”?流的一般概念没有定义可以传输哪种数据或如何传输数据。如果你的意思是卡在里面,因为它不会随着流而流动,那么这听起来像是一个错误。我没有足够的信息可以说。
3赞 Kerrek SB 8/28/2012
我想很多教书的人都发现,技术细节最好用技术术语来解释。隐喻并不总是合适的,很可能会鼓励错误的结论。
4赞 Jonathan Wood 7/17/2015
@KerrekSB:“流”一词本身就是一个隐喻。因此,在这种情况下解释这个比喻似乎很贴切。
12赞 Dietmar Kühl 8/28/2012 #2

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

4赞 Farsan Rashid 7/4/2015 #3

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

9赞 Sandeep_black 1/27/2017 #4

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

基本上流是如果两个类型 1.文本流 2.二进制流

文本流 :它是一行排列的字符序列,每行以换行符(unix)结尾。

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