Qt5中如何将二进制数据写入stdout
How to write binary data to stdout in Qt5
QTextStream
允许我包装 stdout
以便我可以使用 Qt specifics 编写到 stdout 以方便。示例:
QTextStream qout(stdout);
qout << QString("Some qt spesific stuff: %1\n").arg(1337);
然而,虽然QTextStream
确实很有用,但它不支持二进制数据。通过它的所有数据都应遵循有效的字符集和编码(unicode/UTF-8 等)。
因此,如果我想将原始二进制数据输出到 stdout
,逻辑替换将是用 QDataStream
替换 QTextStream
。但是 class 不允许我包装 stdout
(它没有采用标准文件句柄的构造函数)。
那么在将二进制数据写入 stdout
时,我有什么选择可以让 "Qt convenience" 呢?下一个最好的事情是什么?
PS:我知道将二进制数据写入标准输出并不总是好主意。但是,我真的需要这样做。
您可以像这样用 this 重载 QFile::open
打开标准输出:
QFile my_stdout;
if (my_stdout.open(1, QIODevice::WriteOnly)) {
QDataStream qout(my_stdout);
qout << QString("Some qt spesific stuff: %1\n").arg(42);
}
QTextStream
允许我包装 stdout
以便我可以使用 Qt specifics 编写到 stdout 以方便。示例:
QTextStream qout(stdout);
qout << QString("Some qt spesific stuff: %1\n").arg(1337);
然而,虽然QTextStream
确实很有用,但它不支持二进制数据。通过它的所有数据都应遵循有效的字符集和编码(unicode/UTF-8 等)。
因此,如果我想将原始二进制数据输出到 stdout
,逻辑替换将是用 QDataStream
替换 QTextStream
。但是 class 不允许我包装 stdout
(它没有采用标准文件句柄的构造函数)。
那么在将二进制数据写入 stdout
时,我有什么选择可以让 "Qt convenience" 呢?下一个最好的事情是什么?
PS:我知道将二进制数据写入标准输出并不总是好主意。但是,我真的需要这样做。
您可以像这样用 this 重载 QFile::open
打开标准输出:
QFile my_stdout;
if (my_stdout.open(1, QIODevice::WriteOnly)) {
QDataStream qout(my_stdout);
qout << QString("Some qt spesific stuff: %1\n").arg(42);
}