输出缓冲区的刷新
我们的程序已经使用过 endl 操纵符,用于输出一个换行符并刷新缓冲区。
除此之外,C++ 语言还提供了另外两个类似的操纵符。第一个经常使用的 flush,
用于刷新流,但不在输出中添加任何字符。第二个则是比较少用的 ends,这个
操纵符在缓冲区中插入空字符 null,然后后刷新它:
cout << "hi!" << flush; // flushes the buffer; adds no data
cout << "hi!" << ends; // inserts a null, then flushes the buffer
cout << "hi!" << endl; // inserts a newline, then flushes the buffer
unitbuf 操纵符
如果需要刷新所有输出,最好使用 unitbuf 操纵符。这个操纵符在每次执
行完写操作后都刷新流:
cout << unitbuf << "first" << " second" << nounitbuf;
等价于:
cout << "first" << flush << " second" << flush;
nounitbuf 操纵符将流恢复为使用正常的、由系统管理的缓冲区刷新方式。