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

时间:2014-11-29 13:04:05

标签: c++ qt-creator cout flush

代码很简单

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

int main()
{
    for(int i = 0; i < 3; ++i)
    {
        cout << "1 "; cout.flush();
        sleep(1);
    }
}
在.pro文件中

QT += core    
TARGET = ProjectName    
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets    
TEMPLATE = app

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

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

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

那么,为什么cout.flush()会在第一种情况下导致换行?

1 个答案:

答案 0 :(得分:6)

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

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

Flushing application output automatically starts a new line