QByteArray 获取第n个元素的地址
QByteArray get the address of nth element
我需要将以下代码从纯 C++ 转换为 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 文档,看不到 returns char* 和 operator [] 只有 returns 一个临时变量的另一个函数,所以无法解决这个问题。但是 QByteArray 有这么多 options/functions 也许我错过了什么?有人 found/got 有更好的方法来获取 QByteArray 中第 n 个元素的地址吗?
编辑
QByteArray 中似乎没有记录一些东西:
- char* data_ptr() - 同样的问题
- char* 指针 - 表示它具有 stl 可比性,但我可以使用它/相信它吗?
您应该改用 replace
方法:
txMessage.replace(18, 8, UserData, 8) ;
如果您使用的 Qt 版本低于 4.7,但您的 UserData
变量以 null 结尾,那么只需:
txMessage.replace(18, 8, UserData) ;
否则:
memcpy(txMessage.data() + 18, UserData, 8);
我需要将以下代码从纯 C++ 转换为 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 文档,看不到 returns char* 和 operator [] 只有 returns 一个临时变量的另一个函数,所以无法解决这个问题。但是 QByteArray 有这么多 options/functions 也许我错过了什么?有人 found/got 有更好的方法来获取 QByteArray 中第 n 个元素的地址吗?
编辑 QByteArray 中似乎没有记录一些东西:
- char* data_ptr() - 同样的问题
- char* 指针 - 表示它具有 stl 可比性,但我可以使用它/相信它吗?
您应该改用 replace
方法:
txMessage.replace(18, 8, UserData, 8) ;
如果您使用的 Qt 版本低于 4.7,但您的 UserData
变量以 null 结尾,那么只需:
txMessage.replace(18, 8, UserData) ;
否则:
memcpy(txMessage.data() + 18, UserData, 8);