参考:https://blog.youkuaiyun.com/bsmmaoshenbo/article/details/50778068
std::cout输出时,先被缓存到缓冲区,遇到换行符时输出到屏幕上
std::cerr输出时,不经过缓冲区,直接输出到屏幕上,因此可以在最快的时间内将打印信息输出
std::clog输出时,先被缓存到缓冲区,遇到换行符时输出到屏幕上
摘自C++Primer(第四版):
"标准库定义了4个IO对象,处理输入时使用命名为cin的istream类型对象,这个对象也成为标准输入。处理输出时使用命名为cout的ostream类型对象,这个对象也称为标准输出。标准库还定义了另外两个ostream对象,分别命名为cerr和clog。cerr对象又叫标准错误,通常用来输出警告和错误信息给程序的使用者,而clog对象用于产生程序执行的一般信息。一般情况下,系统将这些对象与执行窗口联系起来,这样,当我们从cin读入时,数据从执行程序的窗口读入,当写到cout、cerr、clog时,输出写至同一窗口。运行程序时,大部分操作系统都提供了重定向输入或者输出流的方法。利用重定向可以将这些流与所选择的文件联系起来"