如何在Qt5中将二进制数据写入stdout

时间:2019-03-06 04:10:02

标签: c++ qt stdout qdatastream qtextstream

QTextStream允许我包装stdout,以便我可以方便地使用Qt spesifics编写stdout。示例:

QTextStream qout(stdout);
qout << QString("Some qt spesific stuff: %1\n").arg(1337);

尽管QTextStream确实很有用,但它不支持二进制数据。通过它的所有数据均应遵循有效的字符集和编码(unicode / UTF-8等)。

因此,如果我想将原始二进制数据输出到stdout,则逻辑替换是将QTextStream替换为QDataStream。但是,该类不允许我包装stdout(它没有采用std文件句柄的构造函数)。

那么在将二进制数据写入stdout时,我有什么选择来具有“ Qt便利性”?接下来最好的是什么?

PS:我知道将二进制数据写入std并非总是一个好主意。但是,我确实需要这样做。

1 个答案:

答案 0 :(得分:1)

您可以使用QFile::open的{​​{3}}重载打开标准输出,如下所示:

QFile my_stdout;
if (my_stdout.open(1, QIODevice::WriteOnly)) {
    QDataStream qout(my_stdout);
    qout << QString("Some qt spesific stuff: %1\n").arg(42);
}