C ++-缓冲区和流都需要什么?

夏尔马

尽管我已经阅读了有关缓冲区和流的信息,并且它正在使用c ++中的文件进行工作,但是我不知道如果有流,那么缓冲区的需求是什么,但流总是在那里将一个文件的数据传输到程序中。那么为什么我们要使用缓冲区存储数据(执行与流相同的任务)以及缓冲的和未缓冲的流。

夏尔马(Sharma)

好吧,让我们从头开始假设您要使用文件。为此,您将必须管理如何将数据输入文件,是否成功将数据发送到文件以及所有其他基本工作问题。现在,您可以自己管理所有这一切,这将花费大量时间和精力,或者您可以使用流来做。

是的,您可以为此目的分配流。流使用抽象机制工作,即我们c ++程序员不知道它们的工作方式,但我们只知道我们处于流的一侧(在程序一侧),我们将数据提供给流,并且它有责任将数据从一端传输到另一端(文件一侧)

例如-

ofstream file("abc.txt"); //Here an object of output file stream is created
file<<"Hello";            //We are just giving our data to stream and it transfers that
file.close();             //The closing of file

现在,如果您使用文件,您应该知道使用文件是一项非常昂贵的操作,即访问文件要比访问内存花费更多的时间,并且我们也不必每次都执行文件操作。因此,程序员创建了一个称为缓冲区的新功能,该功能是计算机内存的一部分,并临时存储数据以处理文件。

假设在每次读取文件的位置读取数据,您只是读取了一些存储位置,在该位置临时复制了文件的所有数据。现在,由于您要读取的不是文件,因此这将是一项较便宜的任务。

具有工作缓冲区的流(即它们打开文件,并且默认情况下将文件的所有数据复制到缓冲区)称为缓冲流,而不使用任何缓冲区的流称为未缓冲流。

现在,如果您将数据输入到缓冲流中,则该数据将排队等待,直到不刷新该流为止(刷新意味着将缓冲区中的数据替换为文件中的数据)。未缓冲的流的工作速度更快(从用户的角度来看,位于流的一端),因为数据不会临时存储到缓冲区中,而是在流中被发送到文件中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++-缓冲区和流都需要什么?

来自分类Dev

C:什么是缓冲区下溢?

来自分类Dev

C:什么是缓冲区下溢?

来自分类Dev

如何在流缓冲区C中添加参数

来自分类Dev

c + +和DX11中的动态常量缓冲区或动态顶点缓冲区

来自分类Dev

C-printf和scanf缓冲区

来自分类Dev

在C ++中实现栅格化和深度缓冲区

来自分类Dev

C中的缓冲区互斥量和条件变量

来自分类Dev

了解C中const缓冲区和read()的用法

来自分类Dev

C读取文件和打印缓冲区

来自分类Dev

在C ++中实现栅格化和深度缓冲区

来自分类Dev

即使缓冲区已满,也可以自动刷新C中已完全缓冲的输出流吗?

来自分类Dev

C ++刷新缓冲区

来自分类Dev

C缓冲区指针

来自分类Dev

缓冲区溢出 C

来自分类Dev

C ++ / CLI需要什么?

来自分类Dev

从音频缓冲区和视频缓冲区C ++ Windows构造mp4文件

来自分类Dev

C ++使用宽流读取UTF8缓冲区

来自分类Dev

C ++使用宽流读取UTF8缓冲区

来自分类Dev

有关C中文件流和缓冲区的问题

来自分类Dev

如何在套接字流缓冲区中添加空终止。C

来自分类Dev

需要在没有预定义缓冲区大小的C ++中构建字符串

来自分类Dev

当SSIS中的C#转换需要同步时,在输出缓冲区中使用AddRow()?

来自分类Dev

需要一个用于延迟而不清除C语言缓冲区的函数

来自分类Dev

C ++中的缓冲区大小

来自分类Dev

C ++中的位缓冲区

来自分类Dev

在C ++中解析协议缓冲区

来自分类Dev

清除cout缓冲区(C ++)

来自分类Dev

C缓冲区转换为int