缓冲刷新(即,数据真正写到输出设备或文件)的原因很多:
程序正常结束,作为main函数的renturn操作的一部分,缓冲刷新被执行。
缓冲区满时,需要刷新缓冲,而后新的数据才能继续写入缓冲区
可以使用操纵符如endl来显示地刷新缓冲区
- 在每个输出操作之后,可以用unitbuf设置流的内部状态,来清空缓冲区。默认情况下,对
cerr是设置unitbuf的,因此写到cerr的内容都是立即刷新的
一个输出流可能被关联到另一个流。在这种情况下,当读写被关联的流时,关联到的流的缓冲区会被刷新。例如,默认情况下,cin和cerr都关联到cout。因此,读cin或写cerr都会导致cout的缓冲区被刷新