gpt4 book ai didi

c++ - QByteArray 获取第n个元素的地址

转载 作者:行者123 更新时间:2023-11-28 02:16:22 26 4
gpt4 key购买 nike

我有以下代码需要从纯 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 文档,看不到另一个返回 char* 和 operator [] 的函数只返回一个临时变量,所以无法解决这个问题。但是 QByteArray 有很多选项/功能,也许我错过了什么?有人发现/得到了更好的方法来获取 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++ - QByteArray 获取第n个元素的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33891994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com