zoukankan      html  css  js  c++  java
  • cout如何刷新缓冲区

    #include<iostream>
    #include<cstdlib>
    usingnamespace std;
    int main()
    {
        cout<<"b";
        system("PAUSE");
        return 0;    
    }



    为什么程序没有结束,也没有用endl,flush刷新缓冲区,b照样能输出呢?

    cout<<"b"; 就是向 stdout 输出 "b"; 不需要等待

    endl 是 输出 '\n' 再调 flush.
    flush 是 清缓冲区。
    通常,清缓冲区 用于 清输入缓冲区,而不是输出缓冲区。

    只有在编译程序时,要求优化。例如 频繁循环输出,和 频繁循环交替输入输出 情况下,会不及时输出,而是等到缓冲区有一定数容量内容时再输出。这种情况下,才用endl 或 flush 迫使 程序及时输出。

    cout 这是一个流对象而已,没有刷新的功能
    是endl 有这个功能
    它不但实现了换行操作,而且还对输出缓冲区进行抄刷新。什么意思呢?原来在执行输出操作之后,数据并非立刻传到输出设备,而是先进入一个缓冲区,当适宜的时机(如设袭备空闲)后再由缓冲区传入,也可以通过操纵符flush进行强制刷新:
    cout << "Hello, World! " << "Flush the screen now!!!" << flush;
    这样当程序执行到operator<<(flush)之前,有可能前面知的字符串数据还在缓冲区中而不是显示在屏幕上,但执行operator<<(flush)之后,程序会强制把缓冲区的数据全部搬运到输出设备并将其清空。道而操纵符endl相当于<< "\n" << flush的简写版本,它先输出一个换行符,再实现缓冲区的刷新。

  • 相关阅读:
    十天冲刺之一
    每日日报2021 4/30
    每日日报2021 4/29
    每日日报2021 4/28
    每日日报2021 4/27
    每日日报2021 4/26
    每日日报2021 4/24
    每日日报2021 4/23
    《梦断代码》读后感
    273. Integer to English Words
  • 原文地址:https://www.cnblogs.com/xxxsans/p/12714198.html
Copyright © 2011-2022 走看看