区别
endl : 完成换行,并且刷新输出缓冲区
ends:向缓冲区中添加一个空字符,然后刷新缓冲区;
flush : 刷新缓冲区,不输出任何额外的字符。
用法和endl的相同;
cout<<"hi"<<endl;
cout<<"hi"<<ends;
cout<<"hi"<<flush;
还有另一种刷新输入缓冲区的操作
fflush(stdin);//刷新输入缓冲区
fflush(stdout);//刷新输出缓冲区
如果想每次输出操作都刷新缓冲区,可以使用unitbuf,告诉流在接下来的每次写操作之后都进行一次flush操作。
nounitbuf则恢复正常的缓冲区刷新机制;
cout<<unitbuf;//所有输出操作都会立即刷新缓冲区;
cout<<nounitbuf;//恢复正常的缓冲方式