Russian Qt Forum

Qt => Общие вопросы => Тема начата: merke от Март 07, 2012, 19:20



Название: stdout и QByteArray
Отправлено: merke от Март 07, 2012, 19:20
Всем привет!

Как в stdout вывести QByteArray?

Есть php скрипт, который запускает мою микропрограмму, она должна отдать массив байт фотографии через stdout, а скрипт должен её отобразить.

Не получается и всё...

напрямую делать cout << QByteArray().append("WTF"); не получается

попробовал через QTextStream stream(stdout); - тоже не получается


Название: Re: stdout и QByteArray
Отправлено: alexandros от Март 07, 2012, 19:49
Код
C++ (Qt)
QByteArray ba;
   ba = "Lol";
   std::cout<<ba.data();
 


Название: Re: stdout и QByteArray
Отправлено: Mikhail от Март 07, 2012, 19:50
А QDataStream не пробовал?


Название: Re: stdout и QByteArray
Отправлено: merke от Март 07, 2012, 19:51
в него невозможно передать указатель на stdout


Название: Re: stdout и QByteArray
Отправлено: merke от Март 07, 2012, 20:01
Код:
    QFile outFile;
    outFile.open(stdout, QFile::WriteOnly);

    QDataStream st(&outFile);

    st << arr;

Вот так вот тоже добавляются лишние байты и картинка косячно выводится


Название: Re: stdout и QByteArray
Отправлено: merke от Март 07, 2012, 20:25
Вуаля...)))

Код:
QFile outFile;
outFile.open(stdout, QFile::WriteOnly);
outFile.write(arr.toBase64());

Заработало =)


Название: Re: stdout и QByteArray
Отправлено: andrew.k от Март 09, 2012, 00:13
Код:
    QFile outFile;
    outFile.open(stdout, QFile::WriteOnly);

    QDataStream st(&outFile);

    st << arr;

Вот так вот тоже добавляются лишние байты и картинка косячно выводится
Потому что DataStream сериализует объекты, сохраняя их в своем формате.
А сериализованное представление (http://qt-project.org/doc/qt-4.8/datastreamformat.html) предваряется типом данных ("лишние байты").