У меня есть следующий код, который мне нужно перевести в qt из простого С++:
// txMessage and UserData are char arrays
memcpy(&txMessage[18], UserData, 8);
Итак, мое преобразование выглядит так:
QByteArray txMessage;
txMessage.resize(26);
:
:
memcpy(&(txMessage.data()[18]), UserData, 8);
Так что это должно работать, но выглядит грязно. Я должен получить указатель данных, используя функцию data(), а затем сослаться на элемент 18 с помощью [18], а затем взять его адрес с помощью &.
Я просмотрел всю документацию QByteArray в Интернете и не вижу другой функции, которая возвращает char*, а оператор [] возвращает только временную переменную, поэтому не могу решить эту проблему. Но для QByteArray так много опций/функций, может я что-то пропустил? Кто-нибудь нашел/получил лучший способ получить адрес n-го элемента в QByteArray?
EDIT Есть несколько вещей, которые не задокументированы в QByteArray:
- char* data_ptr() - та же проблема
- Указатель char * - говорит, что это для сравнения stl, но могу ли я его использовать / доверять ему?
txMessage.data() + 18
, немного лучше. - person Holt   schedule 24.11.2015replace
?txMessage.replace(18, 8, UserData);
- person Holt   schedule 24.11.2015