【C++ Primer】【学习笔记】【第八章】标准IO库之:输出缓冲区的管理

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

一、如下几种情况会导致输出缓冲区内容被刷新:
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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值