在Qt中:我可以输出到“stdout”吗,就像使用qDebug()输出到“stderr”一样简单
In Qt: Can I output to `stdout`, as easy as I can output to `stderr` using qDebug()?
到目前为止,我使用 qDebug().noquote()
输出所有内容。这很容易,因为它只需要一个简单的#import <QDebug>
现在我需要输出所有内容stdout
,但我不知道如何轻松做到这一点。我是这样被教导的:
QTextStream cout(stdout, QIODevice::WriteOnly);
但是,创建新对象比简单的#import <QDebug>
要麻烦一些。在qt中处理stdout
的好/最不麻烦的方法是什么?
qDebug()
、qInfo()
等都通过管道传输到默认消息处理程序。但是,您可以轻松安装自己的调试字符串,将调试字符串写入不同的流,文件或任何内容。您需要做的就是定义一个消息处理程序函数并使用 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!";
}
最好的方法是你提到的那个。您不必创建新的局部变量:
QTextStream(stdout) << "Hello world!" << Qt::endl;
如果源文本不是 Latin-1 编码的,则需要在将其传递给流运算符之前转换为 QString
:
QTextStream(stdout) << QString::fromUtf8("utf8 literal") << Qt::endl;
相关文章:
- 显示错误输出的简单数组排序程序
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- 而循环:简单的除法程序输出零,不明白为什么
- 简单函数并不总是返回预期的输出
- 我如何阅读简单的控制台输出
- 我写了一个简单的矢量程序,在其中我得到了以下输出。你能帮我理解它的输出吗?
- 有没有一种简单的方法可以将矢量 int 集转换为字符串输出?
- C++ 使用简单的代码同时写入文件和控制台输出
- 从线程输出简单向量
- (C++)分解这个简单的输入/输出代码:
- 简单的openGL画线程序没有输出
- 尝试用 c++ 制作一个简单的加法器.编译成功,但输出错误
- 在Qt中:我可以输出到“stdout”吗,就像使用qDebug()输出到“stderr”一样简单
- 简单构造函数的复杂编译器输出
- 简单的NOOB C 输入/输出问题:代码错误
- ofstream在极其简单的程序(GCC/Code::Blocks)中首次输出时崩溃
- 有没有一种简单的方法可以将系统命令的输出转换为字符串
- 对于此简单功能,为什么编译器输出如此不同
- 使用嵌套环以简单(对我来说很难)输出
- c++程序在Xcode不输出简单的文本文件使用outFile