• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++输出缓冲区的刷新

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

输出缓冲区内容刷新的意思是:输出缓冲区的内容写入到真实的输出设备或者文件。

 
一、如下几种情况会导致输出缓冲区内容被刷新:
1、程序正常结束;
2、缓冲区满(包含正常情况和异常情况);
3、使用操纵符显式地刷新输出缓冲区,如:endl、ends、flush;
4、使用unitbuf操纵符设置流的内部状态;
5、输出流与输入流相关联,此时在读输入流时将刷新其关联的输出流的输出缓冲区。
 
二、几种操纵符显示刷新输出缓冲区的区别:
方法
行为
cout << "hi!" << endl;
插入newline,然后刷新输出缓冲区;
cout << "hi!" << ends;
插入null,然后刷新输出缓冲区;
cout << "hi!" << flush;
直接刷新输出缓冲区;
三、unitbuf操纵符的使用方法
unitbuf操纵符在每次执行完写操作后都刷新输出缓冲区,如下两种写法等价:
写法一:cout << unitbuf << "first" << "second" << nounitbuf;
写法二:cout << "first" << flush << "second" << flush;
注:nounitbuf操纵符将流恢复为使用系统默认的输出缓冲区刷新方式。
 
四、输入和输出绑定在一起
标准库将cout和cin绑定在一起,语句(cin >> ival;)将导致cout关联的输出缓冲区被刷新。
使用tie()函数的方法如下:
cin.tie(&cout);    // 系统默认的将cin和cout绑定在一起
ostream *old_tie = cin.tie();    // 获取cin绑定的输出流指针
cin.tie(0);            // 解除cin捆绑的输出流
cin.tie(old_tie);   // 重新绑定cout

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
EffectiveC#:避免使用ICloneable接口发布时间:2022-07-13
下一篇:
C#通过Dynamic访问System.Text.Json对象发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap