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

我知道有很多关于这个问题的主题,但是没有一个能够帮助我。

我在我的C / C ++项目中使用std::coutstd::cerr打印信息(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之前出现

好的情况如下, std::cout被添加到buffor中,而std::cerr不会。 std::cerr速度更快,不需要刷新。 另外std::cerrstd::cout使用不同的流。

这里的问题是std::cerr马上显示std:cout在显示之前需要刷新。