缓冲区是什么?
- 缓冲区也叫缓存。我们在内存空间中预留一个存储空间,这个空间就叫做缓冲区。
- 缓冲区还分成输入缓冲区和输出缓冲区
为什么需要缓冲区?
缓冲区可以大大的增加计算机的速度
- 读取时
- 当我们读取磁盘的信息,我们会把读到的数据放在缓冲区里,等到缓冲区里满了,计算机才一次过读取缓冲区里数据
- 这样能够减少磁盘读写次数,而且(计算机对缓冲区的速度)比(计算机对磁盘的速度)还要快
- 写入时
- 当我们使用打印机打印文档,由于打印机的打印速度较慢
- 我们先把文档输出到打印机的缓冲区,再让打印机自行逐步打印
- 这时我们的CPU可以处理别的事情,而不会浪费时间
- 所以,缓冲区就像是磁盘和计算机之间的桥梁,这个桥梁可以增加磁盘和计算机的读写速度
缓冲的类型
缓冲分为三种类型:全缓冲、行缓冲和不带缓冲
- 全缓冲
当填满标准I/O缓存后(也就是缓冲区满了过后)才进行实际I/O操作。全缓冲的典型代表是对磁盘文件的读写。
- 行缓冲
当在输入和输出中遇到换行符时,执行真正的I/O操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作。典型代表是键盘输入数据。
- 不带缓冲
也就是不进行缓冲,立即输出,标准出错情况cerr(C++语言)或stderr(C语言)是典型代表,这使得出错信息可以直接尽快地显示出来
什么时候会刷新缓冲区(输出缓冲区)
- 缓冲区满时
- 执行flush 或 endl 语句
- 关闭文件
什么是endl和flush?
- endl:立即输出缓冲区里的文本,再输出多一个换行符
- flush : 是立即输出缓冲区里的文本(和endl一样),但不会在后面加上一个换行符
就如我们常用的
cout << ”hello world” << endl;
更多讨论在 点我进入