【发布时间】:2021-04-20 12:00:45
【问题描述】:
我在很多地方读到clog 与cerr 相同,除了clog 被缓冲而cerr 不是。但是我在我的计算机上看不到这种行为(Ubuntu 20.04,clang 9)。这是我使用的代码:
clog << "AA";
this_thread::sleep_for(chrono::seconds(3));
clog << endl;
clog << "BB" << endl;
当我使用cout 而不是clog 时,前3 秒内我看不到任何东西;然后我立即看到 AA 和 BB。
当我使用cerr 而不是clog 时,我立即看到AA,然后在3 秒后看到BB。
当我使用clog 时,我看到的和cerr 完全一样 --- 立即 AA,然后在 3 秒后我看到 BB。
如果clog 被缓冲,它的行为不应该像cout吗?
这是我的编译器中的错误吗?
【问题讨论】:
-
“我在很多地方都看过……” - 那些地方可能不太靠谱。
-
是的,
std::clogis buffered 但是这个缓冲区的行为是由实现定义的。