gpt4 book ai didi

c++ - Eclipse C++ 控制台打印命令 linux

转载 作者:IT王子 更新时间:2023-10-29 00:43:51 25 4
gpt4 key购买 nike

我知道有很多关于这方面的主题,但没有一个对我有帮助。

我在我的 C/C++ 项目中使用 std::coutstd::cerr 来打印信息 (cout) 或错误 (cerr)。但是当执行它时,它们不会以正确的顺序打印,它们似乎是“分组打印”。有时先是 cerr 然后是 cout,有时先是 cout 然后是 cerr。

我尝试在每一行之后 flush(),但没有用。 (幸运的是,每次都必须使用它会很糟糕......)。还尝试了 setvbuf(stdout, NULL, _IONBF, 0); 同样的问题...

如果直接在 linux 的控制台中运行程序,顺序很好,但由于颜色,eclipse 控制台更有用。

这里是代码示例

#include <iostream>

int main(int argc, char** argv)
{
std::cerr << __LINE__ << std::endl;
std::cerr << __LINE__ << std::endl;
std::cout << __LINE__ << std::endl;
std::cerr << __LINE__ << std::endl;
std::cerr << __LINE__ << std::endl;
std::cout << __LINE__ << std::endl;
}

和控制台打印

11
12
14
15
13
16

==> 顺序错误...在这个例子中,cerr 在 cout 之前出现

最佳答案

Ok 情况如下,std::cout 被添加到一个 buffor 中,而 std::cerr 没有。 std::cerr 更快,不需要刷新。 std::cerrstd::cout 使用不同的流。

这里的问题是 std::cerr 立即显示,而 std:cout 需要在显示之前刷新。

关于c++ - Eclipse C++ 控制台打印命令 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21443833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com