代码很简单
#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()会在第一种情况下导致换行?
答案 0 :(得分:6)
显然,这是一个 Qt Creator 错误,他们不打算很快解决(至少2015年4月的状态)。我已经测试了Qt Creator 3.5.1(Qt 5.5.1)并且该错误仍然存在,即使新行仅在第一次std::cout.flush()
调用或附加std::flush
操纵符后打印到{{1调用。
无论如何,这个bug的JIRA票可以在这里找到: