码迷,mamicode.com
首页 > 其他好文 > 详细

17.1.1 流和缓冲区

时间:2020-09-07 19:04:54      阅读:46      评论:0      收藏:0      [点我收藏+]

标签:情况   键盘输入   处理   回车   操作   其它   磁盘驱动器   信息   驱动器   

C++程序把输入和输出看作字节流。输入时,程序从输入流中抽取字节;输出时程序将字节插入到输出流中。

对于面向文本的程序,每个字节代表一个字符。故流充当了程序和流源或流目标之间的桥梁,通过使用流,C++程序处理

输出(输入)的方式将独立于其去向(来源)。

  1. 将流与输入去向的程序关联起来;
  2. 将流与文件连接起来

  1. 将流与输出去向的文件关联起来;
  2. 将流与程序连接起来

通过使用缓冲区可以更高效地处理输入和输出。

### 缓冲区:用作中介地内存块,它是将信息从设备传输到程序或从程序传输给设备的临时存储工具。

### 作用:通常,像磁盘驱动器这样地设备以512字节(或更多)地块为单位来传输信息,而程序通常每次只能处理1 个字节的信息。

###            缓冲区帮助匹配这两种不同的信息传输速率:程序—>缓冲区—>设备、设备—>缓冲区—>程序。因此结合缓冲区的机制,

###            使得输入输出更快和更方便。

###            其次,对键盘输入虽然不用担心速率匹配问题(键入速度小于程序的处理速度),但是对键盘进行缓冲可以让用户在将输入

###            传输给程序之前返回并更正。

### ### 由于磁盘等设备执行一个操作时需要大量的硬件操作,所以从内存中读取或写入

### ### 单个字节的速度比从硬盘这些设备上快很多,故采用对于磁盘等设备采用块的方式来处

### ### 理信息,并结合缓冲区的机制,使数据暂存于内存中,让设备与程序的互动变成内存与程序的互动,以达到速率匹配的目的。

刷新缓冲区:

  • 输出时,程序首先填满缓冲区,然后把整块数据传输给硬盘,并清空缓冲区,以备下一批输出使用。这被称为刷新缓冲区;
  • C++程序通常在用户按下回车键时刷新输入缓冲区
  • 对于屏幕输出,C++程序通常在用户发送换行符时刷新输出缓冲区
  • 程序也可能在其它情况下刷新缓冲区,如输入即将到来时刷新输出缓冲区(取决于实现:与ANSI C一致的C++实现如此工作);

 

17.1.1 流和缓冲区

标签:情况   键盘输入   处理   回车   操作   其它   磁盘驱动器   信息   驱动器   

原文地址:https://www.cnblogs.com/suui90/p/13574427.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!