QByteArray获取第n个元素的地址

时间:2015-11-24 11:07:43

标签: c++ qt qbytearray

我有以下代码需要从普通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可比性,但我可以使用它/信任吗?

1 个答案:

答案 0 :(得分:2)

您应该使用replace方法:

txMessage.replace(18, 8, UserData, 8) ;

如果您使用的Qt版本低于4.7,但您的UserData变量以空值终止,则只需:

txMessage.replace(18, 8, UserData) ;

Otherwize:

memcpy(txMessage.data() + 18, UserData, 8);