使用此代码
#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();
}
这两条消息只在关闭我的应用程序的主窗口后打印,为什么会这样? 我试图调试,调试器认为他完成了这一行,但我看不到任何消息。
答案 0 :(得分:2)
extern std::ostream cout;
是缓冲的,因此它可以选择何时将其缓冲区刷新到stdout
。在您的情况下,它是在程序终止时执行的。
你可以告诉std::ostream
使用std :: flush进行刷新,如下:
std::cout << "Why is that?" << std::flush;