Как записать двоичные данные в стандартный вывод в Qt5

QTextStream позволяет мне обернуть stdout, чтобы я мог писать, используя особенности Qt, для stdout с удобством. Пример:

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

Однако, хотя QTextStream действительно полезен, он не поддерживает двоичные данные. Ожидается, что все данные, проходящие через него, будут следовать допустимым наборам символов и кодировкам (Unicode/UTF-8 и т. д.).

Таким образом, логической заменой, если я хочу вывести необработанные двоичные данные в stdout, будет замена QTextStream на QDataStream. Однако этот класс не позволяет мне обернуть stdout (у него нет конструкторов, которые принимают стандартный дескриптор файла).

Итак, какие у меня есть варианты для «удобства Qt» при записи двоичных данных в stdout? И что было бы лучше всего?

PS: я знаю, что запись двоичных данных в стандартный вывод не всегда хорошая идея. Тем не менее, мне действительно нужно это сделать.


person Lennart Rolland    schedule 06.03.2019    source источник


Ответы (1)


Вы можете открыть стандартный вывод с помощью этой перегрузки 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);
}
person Community    schedule 06.03.2019