为什么在Qt C ++中关闭主窗口后打印消息?

时间:2016-03-14 17:38:13

标签: c++ qt output

使用此代码

#include "mainwindow.h"
#include <QApplication>
#include <iostream>
#include <QDir>
#include <QTextStream>

int main(int argc, char *argv[]){
    QApplication a(argc, argv);

    QTextStream out(stdout);
    out << QDir::currentPath();
    std::cout << "Why is that?";

    MainWindow mainWindow;
    mainWindow.show();
    return a.exec();
}

这两条消息只在关闭我的应用程序的主窗口后打印,为什么会这样? 我试图调试,调试器认为他完成了这一行,但我看不到任何消息。

1 个答案:

答案 0 :(得分:2)

extern std::ostream cout;是缓冲的,因此它可以选择何时将其缓冲区刷新到stdout。在您的情况下,它是在程序终止时执行的。

你可以告诉std::ostream使用std :: flush进行刷新,如下:

std::cout << "Why is that?" << std::flush;