QByteArray 的底层是 list 还是 vector
时间: 2024-06-07 13:06:05 浏览: 125
QByteArray 的底层实现是使用 char 数组,而不是 list 或 vector。QByteArray 内部维护了一个指向 char 数组的指针,可以通过 QByteArray::data() 函数获取这个指针。这个指针指向的 char 数组可以存储 QByteArray 中的数据,这也是 QByteArray 能够高效地进行数据读写的原因之一。
相关问题
QByteArray 转 QStringLIst
QByteArray 转 QStringList 可以通过以下步骤实现:
1. 首先,使用 QByteArray 的 toStdString() 函数将 QByteArray 转换为 std::string 类型。
2. 然后,使用 QString 的 fromStdString() 函数将 std::string 转换为 QString 类型。
3. 最后,使用 QString 的 split() 函数将 QString 按照指定的分隔符分割成 QStringList。
下面是示例代码:
```
QByteArray byteArray = "Hello,World";
std::string stdString = byteArray.toStdString();
QString qString = QString::fromStdString(stdString);
QStringList qStringList = qString.split(",");
```
这样就将 QByteArray 转换为了 QStringList。在上述示例中,我们使用逗号作为分隔符进行分割,你可以根据实际需求选择合适的分隔符。
qbytearray转vector
您可以使用`std::vector<uint8_t>`来存储QByteArray中的数据。以下是将QByteArray转换为std::vector<uint8_t>的示例代码:
```c++
QByteArray qByteArray = "Hello, world!";
std::vector<uint8_t> vec(qByteArray.begin(), qByteArray.end());
```
此代码将QByteArray转换为std::vector<uint8_t>,并将其存储在名为vec的变量中。请注意,我们使用QByteArray的begin()和end()函数来获取指向其数据的指针,并将其传递给std::vector<uint8_t>的构造函数。
阅读全文