【C++学习笔记】:流与缓冲区

192 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

1️⃣前言

本篇笔记的内容:

  • 流和缓冲区

2️⃣流

首先了解一下C++中的概念。

C++中的程序将输入和输出看作字节流:

  • 输入时,程序从输入流中抽取字节;
  • 输出时,程序将字节插入到输出流中。

对于需要文件操作的程序来说,每个字节都代表一个字符,即字节可以构成字符或数值数据的二进制表示。

流相当于是一个桥梁,连接流的源头和流的目标:

  • 输入流中的字节可以来自键盘,也可以来自硬盘,又或者是来自其他程序。
  • 输出流中的字节也可以流向屏幕、打印机、存储设备或其他程序。

因此,流的应用使得C++程序可以直接检查字节流而不需要知道字节的来源(键盘的输入或文件的输入)。

通过使用流,可以有效管理输入:

  • 将流与输入去向的程序关联起来。
  • 将流与文件连接起来。

3️⃣缓冲区

使用缓冲区可以更加高效的处理输入输出。

缓冲区是用作中介的内存块,属于一个临时存储工具,其用于将信息从设备传输到程序或者从程序传输到设备上

为什么使用缓冲区处理输入输出会更加高效?

举个例子,我们现在需要处理存储在文件中的数据,C++程序可以从文件中读取一个字符,处理完后,再从文件中处理下一个字符,以此类推下去。像这样处理数据的方法效率不高。但利用缓冲区,将硬盘文件中的数据读取后存储在缓冲区中,由于在缓冲区读取字符比从硬盘上读取字符要快很多,因此利用缓冲方法进行输入输出会更加高效方便。

同样,输出数据时,C++程序会先将数据填满到缓冲区里,然后将缓冲区中的数据传输给硬盘,接着再清空缓冲区,便于下一次输出的使用。这也被称为刷新缓冲区。

另外的,当我们通过键盘输入字符时,C++程序并没有马上处理输入的数据,而是当我们按下回车键再处理数据。这是因为C++程序通常在我们按下回车键时就刷新缓冲区。而对于屏幕输出,C++程序通常会在我们使用换行符时刷新输出缓冲区。当然,当C++程序运行到输入语句时,将刷新输出缓冲区中的所有输出。

好了,本篇笔记就到写这,欢迎大家到评论区一起讨论!