尽管我已经阅读了有关缓冲区和流的信息,并且它正在使用c ++中的文件进行工作,但是我不知道如果有流,那么缓冲区的需求是什么,但流总是在那里将一个文件的数据传输到程序中。那么为什么我们要使用缓冲区存储数据(执行与流相同的任务)以及缓冲的和未缓冲的流。
好吧,让我们从头开始假设您要使用文件。为此,您将必须管理如何将数据输入文件,是否成功将数据发送到文件以及所有其他基本工作问题。现在,您可以自己管理所有这一切,这将花费大量时间和精力,或者您可以使用流来做。
是的,您可以为此目的分配流。流使用抽象机制工作,即我们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] 删除。
我来说两句