C++中输入输出缓冲区的刷新
2016-03-12 11:54
260 查看
<分析>:未刷新缓存区造成输出停留在缓存区中,如果系统崩溃,将会导致程序对缓存区的位置的错误判断,所以要定时刷新缓存区,以下是缓存区刷新的几种方法:
(1)程序正常结束。作为main返回工作的一部分,将清空所有的输出缓冲区。
(2)在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。
(3)用操纵符显式地刷新缓冲区,如用endl、ends、flush。例如:
cout<<”hi”<<flush;
cout<<”hi”<<ends;
cout<<”hi”<<endl;
(4)在每次输出操作执行完毕后,用unitbuf操纵符设置流的内部状态,从而清空缓冲区。例如:
cout<<unitbuf;------每次输出都刷新
cout<<nounitbuf------恢复正常状态
(5)可将输出流与输入流关联起来,在读输入流时将刷新其关联的输出缓冲区。
(6)默认情况下,cerr不缓冲、clog、cout缓冲。
(7)如果程序不正常退出,则不进行缓存区刷新。
(1)程序正常结束。作为main返回工作的一部分,将清空所有的输出缓冲区。
(2)在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。
(3)用操纵符显式地刷新缓冲区,如用endl、ends、flush。例如:
cout<<”hi”<<flush;
cout<<”hi”<<ends;
cout<<”hi”<<endl;
(4)在每次输出操作执行完毕后,用unitbuf操纵符设置流的内部状态,从而清空缓冲区。例如:
cout<<unitbuf;------每次输出都刷新
cout<<nounitbuf------恢复正常状态
(5)可将输出流与输入流关联起来,在读输入流时将刷新其关联的输出缓冲区。
(6)默认情况下,cerr不缓冲、clog、cout缓冲。
(7)如果程序不正常退出,则不进行缓存区刷新。
相关文章推荐
- 对C语言中指针的理解与其基础使用实例
- [手游新项目历程]第6天-二进制值和十六进制字符串相互转换的C++代码
- C和C++ const的声明差异
- C和C++ const的声明差异
- 简单了解C语言中直接插入排序与直接选择排序实现
- C++ constexpr类型说明符
- C++ constexpr类型说明符
- 关于C++中友元的理解和应用
- c++中引用和指针的区别
- c++中的模板
- C语言终极面试及答案分析
- C++拷贝构造函数与赋值函数的异同
- 《More Effective C++》Rule7:千万不要重载 &&, ||, 和 ,操作符
- 二进制中1的个数
- C语言堆内存管理上出现的问题,内存泄露,野指针使用,非法释放指针
- 学习C++之类与对象
- C++中的main函数
- C语言-数组
- C语言—指针数组
- C/C++函数指针(typedef简化定义)