【问题标题】:How to write binary data to stdout in Qt5如何在 Qt5 中将二进制数据写入标准输出
【发布时间】:2019-03-06 04:10:02
【问题描述】:

QTextStream 允许我将stdout 包装起来,以便我可以使用 Qt spesifics 方便地写入标准输出。示例:

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:我知道将二进制数据写入标准输出并不总是好主意。但是,我真的需要这样做。

【问题讨论】:

    标签: c++ qt stdout qdatastream qtextstream


    【解决方案1】:

    您可以使用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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 2014-11-09
      • 2012-10-13
      • 2010-12-01
      • 2019-09-04
      相关资源
      最近更新 更多