【发布时间】:2020-12-02 14:59:41
【问题描述】:
我正在尝试使用cerr 和clog 而不是cout 来发出错误消息。但是我遇到了一个问题。以下是简化版。
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 5; ++i) {
int x;
cin >> x;
cout << "first" << endl;
cerr << "second" << endl;
}
return 0;
}
但结果是
1
first
second
2
second
first
3
second
first
4
first
second
5
second
first
但是,如果我在Win10的cmd上使用g++编译运行,那就没问题了。
1
first
second
2
first
second
3
first
second
4
first
second
5
first
second
所以我开始怀疑有一些特定的设置使 Clion 内部编译&运行环境与 g++ 不同。但我不确定。 谁能告诉我为什么?
【问题讨论】:
-
这是由 CLion 的“控制台”内部完成的缓冲和标准流的缓冲(或者更确切地说是
std::cerr缺少缓冲)的不幸结果。 -
对不起,我是初学者,能详细描述一下吗?如果可能的话,你能否给出一些关于如何用 Clion 修复探针的说明?谢谢。