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

Why does Qt Creator add a newline after cout.flush() call?

本文关键字:添加 一个 换行符 调用 cout flush Qt 为什么 Creator      更新时间:2023-10-16

代码很简单

#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()在第一种情况下会导致换行符?

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

无论如何,此错误的JIRA票证可以在这里找到:

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

相关文章: