• 17.1.1 流和缓冲区


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    刷新缓冲区:

    • 输出时,程序首先填满缓冲区,然后把整块数据传输给硬盘,并清空缓冲区,以备下一批输出使用。这被称为刷新缓冲区;
    • C++程序通常在用户按下回车键时刷新输入缓冲区
    • 对于屏幕输出,C++程序通常在用户发送换行符时刷新输出缓冲区
    • 程序也可能在其它情况下刷新缓冲区,如输入即将到来时刷新输出缓冲区(取决于实现:与ANSI C一致的C++实现如此工作);
  • 相关阅读:
    正则判断是否为字母数字汉字
    lucene3.0范围查找TermRangeQuery
    【codecombat】 试玩全攻略 第三关幽灵守卫
    【codecombat】 试玩全攻略
    【codecombat】 试玩全攻略 特别关:不祥的征兆
    【codecombat】 试玩全攻略 第一关kithguard地牢
    【codecombat】 试玩全攻略 第四关 真实姓名
    【codecombat】 试玩全攻略 第二关深藏的宝石
    【codecombat】 试玩全攻略 第五关 高举之剑
    python读书笔记
  • 原文地址:https://www.cnblogs.com/suui90/p/13574427.html
Copyright © 2020-2023  润新知