endl 它完成换行并刷新缓冲区的工作;
flush 刷新缓冲区,但不输出任何额外的字符;
ends 向缓冲区中插入一个空字符,然后刷新缓冲区:
cout << "hi!" << endl;
cout << "hi!" << flush;
cout << "hi!" << ends;
如果想在每次输出操作后都刷新缓冲区,我们可以使用unitbuf操作符。它告诉流在接下来的每次写操作后都进行一次flush操作。而nounitbuf操作符则重置流,使其恢复使用正常的系统管理的缓冲区刷新机制:
cout<<unitbuf; //所有输出操作后都会立即刷新缓冲区
cout<<nounitbuf; //回到正常的缓冲方式