Согласно документации для readBytes()
(в QDataStream Qt 5.4), Я ожидаю, что следующий код скопирует input_array
во вновь выделенную память и укажет raw
на копию:
QByteArray input_array{"\x01\x02\x03\x04qwertyuiop"};
QDataStream unmarshaller{&input_array, QIODevice::ReadOnly};
char* raw;
uint length;
unmarshaller.readBytes(raw, length);
qDebug() << "raw null? " << (raw == nullptr) << " ; length = " << length << endl;
... но код печатает raw null? true ; length = 0
, указывая на то, что из входного массива не было прочитано ни одного байта.
Почему это? Что я неправильно понимаю в отношении readBytes()
?
QByteArray
нужен массив символов с нулевым завершением, если вы не укажете размер. - person cmannett85   schedule 15.04.2015quint8
, используя>>
, я получу ожидаемые1
,2
,3
,4
, что, по-видимому, подразумевает, что я действительно строю ожидаемый QByteArray... верно? - person Kyle Strand   schedule 15.04.2015qDebug()
. - person Kyle Strand   schedule 15.04.2015\0
в конец строки конструктораinput_array
не меняет поведение кода. - person Kyle Strand   schedule 15.04.2015