导致缓冲区内容被刷新的几种情况:
1、程序正常结束。作为main返回工作的一部分,将清空所有输出缓冲区。
2、在一些内存不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。
3、用操作符显示地刷新缓冲区,例如行结束符endl。
4、在每次输出操作执行完后,用unitbuf操作符设置流的内部状态,从而清空缓冲区。
5、可将输出流与输入流关联起来。在这种情况下,在读输入流时,将刷新其关联的输出缓冲区。
此外还应注意,如果程序不正常结束,输出缓冲区将不会刷新。调试程序时,必须保证期待写入的每个输出都确实被刷新了。最好的方法是保证所有的输出操作都显示调用了flush或endl。