为什么Qt Creator在cout.flush()调用后添加换行符?

Mic*_*nov 7 c++ cout flush qt-creator

代码很简单

#include <iostream>
#include <unistd.h>
using namespace std;

int main()
{
    for(int i = 0; i < 3; ++i)
    {
        cout << "1 "; cout.flush();
        sleep(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

在.pro文件中

QT += core    
TARGET = ProjectName    
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets    
TEMPLATE = app
Run Code Online (Sandbox Code Playgroud)

如果输出进入Qt Creator"应用程序输出"(默认位于源代码位置下),则每个"1"从新行开始.

如果我使用g ++在Ubuntu终端中编译和执行单独的*.cpp文件,它可以正常工作.

如果我在Qt Creator中创建一个新项目并输出到Qt Creator控制台(带有黑色背景的新窗口),它会以正确的方式工作.

好吧,为什么cout.flush()会在第一种情况下引起换行?

dba*_*ric 6

显然,这是一个Qt Creator错误,他们不打算很快解决(至少那是2015年4月的状态).我已经测试了Qt Creator 3.5.1(Qt 5.5.1)并且该bug仍然存在,即使新行仅在第一次std::cout.flush()调用或附加std::flush操纵器std::cout <<调用后打印.

无论如何,这个bug的JIRA票可以在这里找到:

刷新应用程序输出会自动启动新行