在Qt:我可以输出到`stdout`,就像我可以使用qDebug()输出到`stderr`一样简单吗?

时间:2017-03-19 01:33:21

标签: c++ qt stdout qdebug qtextstream

到目前为止,我使用qDebug().noquote()输出所有内容。这很简单,因为它只需要一个简单的#import <QDebug>

现在我需要输出所有内容到stdout,但我不知道如何轻松地做到这一点。这就是我的教导方式:

QTextStream cout(stdout, QIODevice::WriteOnly);

然而,创建一个新对象比一个简单的#import <QDebug>更麻烦。在qt中处理stdout的好/最麻烦的方法是什么?

2 个答案:

答案 0 :(得分:2)

最好的方法是你提到的那个。您不必创建新的本地变量:

app/inc/

如果源文本不是Latin-1编码,那么在将其传递给流操作符之前,您需要转换为mounted() { this.$nextTick(function () { var self = this; axios.get('/api/user/isLoggedIn').then(function(response) { var isLoggedIn = response.data.data; self.loggedIn = isLoggedIn; }); }); }

QTextStream(stdout) << "Hello world!" << endl;

答案 1 :(得分:2)

qDebug(), qInfo(), etc. are all piped to a default message handler. But you can easily install your own that writes the debug strings to a different stream, file, or anything. All you need to do is define a message handler function and install it using qInstallMessageHandler()

总而言之,这是一个完整的例子:

#include <QDebug>

void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    QTextStream cout(stdout, QIODevice::WriteOnly);
    cout << msg << endl;
}

int main(int argc, char *argv[])
{
    qInstallMessageHandler(myMessageOutput);

    qDebug().noquote() << "Hello world!";
}