QByteArray 采用拷贝的方式复制到char* buf
时间: 2023-07-23 21:09:29 浏览: 66
如果你想将 QByteArray 的内容拷贝到一个新的 char* 缓冲区中,而不是共享底层数据的指针,可以使用 QByteArray 的 data() 和 size() 方法,以及 memcpy() 函数来实现。下面是一个示例代码:
```cpp
#include <QByteArray>
#include <iostream>
#include <cstring>
int main() {
QByteArray byteArray("Hello World");
// 创建一个新的缓冲区,大小为 QByteArray 的长度加上一个额外的空字符('\0')
char* buf = new char[byteArray.size() + 1];
// 将 QByteArray 的内容拷贝到缓冲区中
std::memcpy(buf, byteArray.data(), byteArray.size());
// 在缓冲区末尾添加一个空字符('\0')
buf[byteArray.size()] = '\0';
std::cout << "buf: " << buf << std::endl;
// 不再需要缓冲区时,记得释放内存
delete[] buf;
return 0;
}
```
在上述示例中,我们首先创建了一个新的 char* 缓冲区,大小为 QByteArray 的长度加上一个额外的空字符('\0')。然后,我们使用 std::memcpy() 函数将 QByteArray 的数据拷贝到缓冲区中。最后,我们在缓冲区末尾添加一个空字符('\0'),以确保字符串的正确结尾。最终,我们打印输出了 buf 的内容。
请注意,在使用完缓冲区后,需要记得使用 delete[] 来释放内存,以避免内存泄漏。