Как записать двоичные данные в стандартный вывод в Qt5 - PullRequest
1 голос
/ 06 марта 2019

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).

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

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

1 Ответ

1 голос
/ 06 марта 2019

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