C++ 几种刷新输出缓冲区方式

一下几种情况会导致缓冲区内容被刷新,即写入到真实的输出设备或者文件:

1. 程序正常结束, 作为main 返回工作的一部分,将情况所有输出缓冲区;

2. 一些不确定的时候,缓冲区可能已满;

3. 使用manipulator 显示属性缓冲区, 比较常用的是endl, flush, ends:

 cout<<"hi"<<endl ;    // 插入换行,同时刷新输出缓冲区  ,end line 所以换行

cout<<"hi"<<ends;      //末尾插入null, 刷新缓存区    ,  end string (const string *), 所以加null

cout<<"hi"<<flush;      // 刷新缓存区,不添加任何数据

 

4.  使用unitbuf 设置流的内部状态, 适合所有输出都要刷新缓冲区,unitbuf 和nounitbuf 之间的区域每次写完后都刷新流

cout<<unitbuf<<"first"<<"second"<<nounitbuf;

等价于

cout<<"first"<<flush<<"second"<<flush;

 

5. 使用tie 将输入流和输出流关联起来,  这种情况下,在读输入流时将刷新其关联的输出缓冲区,标准库默认将cout 和cin 绑在一起;

cin.tie(&cout);   // cin 和cout 关联

cin.tie(0);    // 解除该流上已存在的捆绑

 

 

更多关于编程语言, 数据库,算法等精品内容, 请访问 我的个人博客 huqijun.org

个人原创内容, 转载请注明来源!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值