本页内容

QCborArray Class

QCborArray 类用于存储一个由 CBOR 元素组成的数组。更多内容...

头文件: #include <QCborArray>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

注意:该类中的所有函数均为可重入的。

QCborArray 比较

类别可比较类型
strongQCborArray
strongQCborValueConstRef.

公共类型

公共函数

QCborArray()
QCborArray(std::initializer_list<QCborValue> args)
QCborArray(const QCborArray &other)
(since 6.10) QCborArray(QCborArray &&other)
~QCborArray()
void append(QCborValue &&value)
void append(const QCborValue &value)
QCborValue at(qsizetype i) const
QCborArray::iterator begin()
QCborArray::const_iterator begin() const
QCborArray::const_iterator cbegin() const
QCborArray::const_iterator cend() const
void clear()
int compare(const QCborArray &other) const
QCborArray::const_iterator constBegin() const
QCborArray::const_iterator constEnd() const
bool contains(const QCborValue &value) const
bool empty() const
QCborArray::iterator end()
QCborArray::const_iterator end() const
QCborArray::iterator erase(QCborArray::const_iterator it)
QCborArray::iterator erase(QCborArray::iterator it)
QCborValue extract(QCborArray::ConstIterator it)
QCborValue extract(QCborArray::Iterator it)
QCborValueRef first()
QCborValue first() const
void insert(qsizetype i, QCborValue &&value)
void insert(qsizetype i, const QCborValue &value)
QCborArray::iterator insert(QCborArray::const_iterator before, const QCborValue &value)
QCborArray::iterator insert(QCborArray::iterator before, const QCborValue &value)
bool isEmpty() const
QCborValueRef last()
QCborValue last() const
void pop_back()
void pop_front()
void prepend(QCborValue &&value)
void prepend(const QCborValue &value)
void push_back(const QCborValue &t)
void push_front(const QCborValue &t)
void removeAt(qsizetype i)
void removeFirst()
void removeLast()
qsizetype size() const
void swap(QCborArray &other)
QCborValue takeAt(qsizetype i)
QCborValue takeFirst()
QCborValue takeLast()
QCborValue toCborValue() const
QJsonArray toJsonArray() const
QVariantList toVariantList() const
QCborArray operator+(const QCborValue &v) const
QCborArray &operator+=(const QCborValue &v)
QCborArray &operator<<(const QCborValue &v)
(since 6.10) QCborArray &operator=(QCborArray &&other)
QCborArray &operator=(const QCborArray &other)
QCborValueRef operator[](qsizetype i)
const QCborValue operator[](qsizetype i) const

静态公共成员

QCborArray fromJsonArray(const QJsonArray &array)
(since 6.3) QCborArray fromJsonArray(QJsonArray &&array)
QCborArray fromStringList(const QStringList &list)
QCborArray fromVariantList(const QVariantList &list)
bool operator!=(const QCborArray &lhs, const QCborArray &rhs)
bool operator<(const QCborArray &lhs, const QCborArray &rhs)
bool operator<=(const QCborArray &lhs, const QCborArray &rhs)
bool operator==(const QCborArray &lhs, const QCborArray &rhs)
bool operator>(const QCborArray &lhs, const QCborArray &rhs)
bool operator>=(const QCborArray &lhs, const QCborArray &rhs)

详细说明

该类可用于存储一个 CBOR 格式的顺序容器(即数组)。 CBOR 即“简洁二进制对象表示法”(Concise Binary Object Representation),是一种非常紧凑的二进制数据编码格式,是 JSON 的超集。它由 IETF 受限 RESTful 环境(CoRE)工作组创建,该工作组已在许多新的 RFC 中使用了它。它旨在与CoAP 协议配合使用。

QCborArray 与QVariantList 和QJsonArray 非常相似,其 API 与这两个类几乎完全相同。它还可以与这两个类相互转换,尽管某些转换过程中可能会丢失信息。

另请参阅 QCborValue 、QCborMap 、QJsonArray 、QList 、解析和显示 CBOR 数据、序列化转换器以及保存和加载游戏。

成员类型文档

QCborArray::const_iterator

QCborArray::ConstIterator 的同义词。

QCborArray::const_pointer

一个用于定义const QCborValue * 的typedef,以确保与泛型算法的兼容性。

QCborArray::const_reference

一个用于定义const QCborValue & 的typedef,以确保与泛型算法的兼容性。

QCborArray::difference_type

qsizetype 的 typedef 定义。

QCborArray::iterator

QCborArray::Iterator 的同义词。

QCborArray::pointer

一个指向 `QCborValue *` 的 `typedef`,用于与泛型算法保持兼容性。

QCborArray::reference

一个用于定义QCborValue & 的typedef,以兼容泛型算法。

QCborArray::size_type

qsizetype 的 typedef 定义。

QCborArray::value_type

QCborArray 中可以存储的值类型:即QCborValue 。

成员函数文档

[noexcept] QCborArray::QCborArray()

创建一个空的 QCborArray。

QCborArray::QCborArray(std::initializer_list<QCborValue> args)

根据args 中提供的C++大括号括起的列表初始化此QCborArray,如下例所示:

QCborArray a = { null, 0, 1, 1.5, 2, "Hello", QByteArray("World") };

[noexcept] QCborArray::QCborArray(const QCborArray &other)

将other 中的内容复制到此对象中。

[constexpr noexcept default, since 6.10] QCborArray::QCborArray(QCborArray &&other)

移动构造函数。

被移动的对象other 将被置于默认构造状态。

该函数在 Qt 6.10 中引入。

另请参阅 QCborArray::QCborArray()。

[noexcept] QCborArray::~QCborArray()

销毁此QCborArray 并释放所有相关资源。

void QCborArray::append(QCborValue &&value)

void QCborArray::append(const QCborValue &value)

将value 追加到数组中,置于该数组中可能已包含的所有其他元素之后。

另请参阅 at()、operator[]()、first()、last()、insert()、prepend()、removeAt() 以及takeAt()。

QCborValue QCborArray::at(qsizetype i) const

返回数组中位于位置i 的QCborValue 元素。

如果数组的大小小于i 个元素,则该函数返回一个包含未定义值的QCborValue 。因此,无法通过该函数区分数组大小不足的情况与数组以未定义值开头的情况。

另请参阅 operator[]()、first()、last()、insert()、prepend()、append()、removeAt(),以及takeAt()。

QCborArray::iterator QCborArray::begin()

返回一个指向该数组中第一个元素的数组迭代器。如果数组为空,则该函数的返回结果与end()相同。

另请参阅 constBegin() 和end()。

QCborArray::const_iterator QCborArray::begin() const

返回一个指向该数组中第一个元素的数组迭代器。如果数组为空,则该函数的返回结果与end()相同。

另请参阅 constBegin() 和constEnd()。

QCborArray::const_iterator QCborArray::cbegin() const

返回一个指向该数组第一个元素的数组迭代器。如果数组为空,则该函数的返回结果与end()相同。

另请参阅 constBegin() 和constEnd()。

QCborArray::const_iterator QCborArray::cend() const

返回一个数组迭代器,该迭代器指向该数组中最后一个元素之后的下一个位置。

另请参阅 constBegin() 和constEnd()。

void QCborArray::clear()

清空此数组。

另请参阅 isEmpty()。

[noexcept] int QCborArray::compare(const QCborArray &other) const

将该数组与 `other` 进行比较,按顺序逐个比较每个元素,并返回一个整数,该整数表示该数组应排在 `other ` 之前(若结果为负)还是之后(若结果为正)。如果该函数返回 0,则表示两个数组相等且包含相同的元素。

有关 CBOR 排序顺序的更多信息,请参阅QCborValue::compare()。

另请参阅 QCborValue::compare()、QCborMap::compare() 以及operator==()。

QCborArray::const_iterator QCborArray::constBegin() const

返回一个指向该数组中第一个元素的数组迭代器。如果数组为空,则该函数的返回结果与 `end()` 相同。

另请参阅 begin() 和constEnd()。

QCborArray::const_iterator QCborArray::constEnd() const

返回一个数组迭代器,该迭代器指向该数组中最后一个元素之后的下一个位置。

另请参阅 constBegin() 和end()。

bool QCborArray::contains(const QCborValue &value) const

如果该数组中包含一个与value 相等的元素,则返回true。

bool QCborArray::empty() const

isEmpty() 的同义词。提供此函数是为了与使用标准库 API 的通用代码保持兼容性。

如果该数组为空,则返回 true(size() == 0)。

另请参阅 isEmpty() 和size()。

QCborArray::iterator QCborArray::end()

返回一个数组迭代器,该迭代器指向该数组中最后一个元素之后的第一个位置。

另请参阅 begin() 和constEnd()。

QCborArray::const_iterator QCborArray::end() const

返回一个数组迭代器,该迭代器指向该数组最后一个元素之后的位置。

另请参阅 constBegin() 和constEnd()。

从该数组中移除数组迭代器it 所指向的元素,然后返回指向下一个元素的迭代器(该元素在数组中的位置与it 原先所占的位置相同)。

另请参阅 insert()、removeAt()、takeAt()、takeFirst() 以及takeLast()。

QCborValue QCborArray::extract(QCborArray::ConstIterator it)

QCborValue QCborArray::extract(QCborArray::Iterator it)

从数组中提取迭代器it 所指位置处的值,并返回该值。

另请参阅 insert()、erase()、takeAt() 以及removeAt()。

QCborValueRef QCborArray::first()

返回对此数组中第一个QCborValue 的引用。该数组不能为空。

QCborValueRef 与QCborValue 的 API 完全相同,但有一个重要区别:若为其赋值,该数组将更新为新值。

另请参阅 operator[]()、at()、last()、insert()、prepend()、append()、removeAt() 以及takeAt()。

QCborValue QCborArray::first() const

返回该数组中的第一个QCborValue 。

如果数组为空,该函数将返回一个包含未定义值的QCborValue 。因此,无法通过该函数区分数组长度不足的情况与数组末尾为未定义值的情况。

另请参阅 operator[]()、at()、last()、insert()、prepend()、append()、removeAt(),以及takeAt()。

[static] QCborArray QCborArray::fromJsonArray(const QJsonArray &array)

使用 QCborValue::fromJson() 将array 数组中找到的所有 JSON 项转换为 CBOR,并返回由这些元素组成的 CBOR 数组。

由于 CBOR 类型系统是 JSON 类型的超集,因此该转换是无损的。此外,可以通过调用toJsonArray() 将该函数返回的数组转换回原始的array 。

另请参阅 toJsonArray()、toVariantList()、QCborValue::fromJsonValue() 以及QCborMap::fromJsonObject()。

[static noexcept, since 6.3] QCborArray QCborArray::fromJsonArray(QJsonArray &&array)

这是一个重载函数。

该函数在 Qt 6.3 中引入。

[static] QCborArray QCborArray::fromStringList(const QStringList &list)

返回一个QCborArray ,其中包含在list 列表中找到的所有字符串。

另请参阅 fromVariantList() 和fromJsonArray()。

[static] QCborArray QCborArray::fromVariantList(const QVariantList &list)

使用QCborValue::fromVariant() 将list 中的所有项转换为 CBOR,并返回由这些元素组成的数组。

从QVariant 格式的转换并非完全无损。有关更多信息,请参阅QCborValue::fromVariant()函数的文档。

另请参阅 toVariantList()、fromStringList()、fromJsonArray() 以及QCborMap::fromVariantMap()。

void QCborArray::insert(qsizetype i, QCborValue &&value)

void QCborArray::insert(qsizetype i, const QCborValue &value)

将value 插入到数组的第i 个位置。如果i 为 -1,则将该条目追加到数组末尾。如果i 大于数组原有的大小,则用无效条目填充数组。

另请参阅 at()、operator[]()、first()、last()、prepend()、append()、removeAt()、takeAt() 以及extract()。

QCborArray::iterator QCborArray::insert(QCborArray::const_iterator before, const QCborValue &value)

QCborArray::iterator QCborArray::insert(QCborArray::iterator before, const QCborValue &value)

将value 插入到该数组中,位置在元素before 之前,并返回一个指向刚插入的元素的数组迭代器。

另请参阅 erase()、removeAt()、prepend() 和append()。

bool QCborArray::isEmpty() const

如果该QCborArray 为空(即size()的返回值为0),则返回true。

另请参阅 size() 和clear()。

QCborValueRef QCborArray::last()

返回对此数组中最后一个QCborValue 的引用。该数组不能为空。

QCborValueRef 的 API 与QCborValue 完全相同,但有一个重要区别:如果向其赋值,该数组将更新为新值。

另请参阅 operator[]()、at()、first()、insert()、prepend()、append()、removeAt(),以及takeAt()。

QCborValue QCborArray::last() const

返回该数组的最后一个QCborValue 。

如果数组为空,该函数将返回一个包含未定义值的QCborValue 。因此,无法通过该函数区分数组长度不足的情况与数组末尾为未定义值的情况。

另请参见 operator[]()、at()、first()、insert()、prepend()、append()、removeAt() 以及takeAt()。

void QCborArray::pop_back()

removeLast() 的同义词。提供此函数是为了与使用标准库 API 的通用代码保持兼容性。

移除此数组的最后一个元素。移除前,该数组不得为空

另请参阅 removeLast()、takeLast()、pop_front()、push_back()、append() 以及insert()。

void QCborArray::pop_front()

removeFirst() 的同义词。提供此函数是为了与使用标准库 API 的通用代码保持兼容性。

移除此数组的首个元素。移除操作前,该数组不得为空

另请参阅 removeFirst()、takeFirst()、pop_back()、push_front()、prepend() 和insert()。

void QCborArray::prepend(QCborValue &&value)

void QCborArray::prepend(const QCborValue &value)

将value 添加到数组开头,位于数组中可能已有的其他元素之前。

另请参阅 at()、operator[]()、first()、last()、insert()、append()、removeAt() 以及takeAt()。

void QCborArray::push_back(const QCborValue &t)

append() 的同义词。提供此函数是为了与使用标准库 API 的通用代码保持兼容性。

将元素t 追加到该数组中。

另请参阅 append()、push_front()、pop_back()、prepend() 以及insert()。

void QCborArray::push_front(const QCborValue &t)

prepend() 的同义词。提供此函数是为了与使用标准库 API 的通用代码保持兼容性。

将元素t 添加到该数组的首位。

另请参阅 prepend()、push_back()、pop_front()、append() 以及insert()。

void QCborArray::removeAt(qsizetype i)

从数组中移除位置为i 的元素。移除前,数组中的元素个数必须大于i 。

另请参阅 takeAt()、removeFirst()、removeLast()、at()、operator[]()、insert()、prepend(),以及append()。

void QCborArray::removeFirst()

移除数组中的第一个元素,使第二个元素成为第一个。调用此函数前,数组不能为空。

另请参阅 removeAt(),takeFirst(),removeLast(),at(),operator[](),insert(),prepend() 以及append()。

void QCborArray::removeLast()

删除数组中的最后一个元素。调用此方法之前,数组不能为空。

另请参阅 removeAt(),takeLast(),removeFirst(),at(),operator[](),insert(),prepend() 和append()。

[noexcept] qsizetype QCborArray::size() const

返回该数组的大小。

另请参阅 isEmpty()。

[noexcept] void QCborArray::swap(QCborArray &other)

将该数组与other 互换。此操作速度极快,且绝不会失败。

QCborValue QCborArray::takeAt(qsizetype i)

从数组中移除位于位置i 的元素,并返回该元素。移除前,数组的元素个数必须大于i 。

另请参阅 removeAt()、removeFirst()、removeLast()、at()、operator[]()、insert()、prepend() 和append()。

QCborValue QCborArray::takeFirst()

移除数组中的第一个元素并返回该元素,使第二个元素成为第一个元素。调用此函数前,数组不得为空。

另请参阅 takeAt(),removeFirst(),removeLast(),at(),operator[](),insert(),prepend() 以及append()。

QCborValue QCborArray::takeLast()

移除数组中的最后一个元素并返回该元素。调用此函数前,数组不能为空。

另请参阅 takeAt(),removeLast(),removeFirst(),at(),operator[](),insert(),prepend() 以及append()。

QCborValue QCborArray::toCborValue() const

显式构建一个表示该数组的QCborValue 对象。通常无需调用此函数,因为QCborValue 类已为QCborArray 提供了构造函数,因此转换是隐式的。

将 `QCborArray ` 转换为 `QCborValue ` 后,即可在任何可以使用 `QCborValues` 的上下文中使用它,包括作为 `QCborArrays` 中的元素,以及作为 `QCborMap` 中的键和映射类型。将数组转换为 `QCborValue ` 后,即可访问 `QCborValue::toCbor()` 方法。

另请参阅 QCborValue::QCborValue(const QCborArray &)。

QJsonArray QCborArray::toJsonArray() const

使用QCborValue::toJsonValue()将该数组中的每个QCborValue 元素递归转换为JSON,并返回由这些元素组成的相应QJsonArray 。

请注意,CBOR包含比JSON更丰富、更广泛的类型集,因此在此转换过程中可能会丢失部分信息。有关应用了哪些转换的更多详细信息,请参阅QCborValue::toJsonValue()。

另请参阅 fromJsonArray()、QCborValue::toJsonValue()、QCborMap::toJsonObject() 以及toVariantList()。

QVariantList QCborArray::toVariantList() const

使用QCborValue::toVariant() 递归地转换数组中的每个QCborValue ,并返回由转换后的项组成的QVariantList 。

转换为QVariant 并非完全无损。更多信息请参阅QCborValue::toVariant()的文档。

另请参阅 fromVariantList()、fromStringList()、toJsonArray()、QCborValue::toVariant() 以及QCborMap::toVariantMap()。

QCborArray QCborArray::operator+(const QCborValue &v) const

返回一个新的QCborArray ,其中包含与该数组相同的元素,并在末尾追加v 作为最后一个元素。

另请参阅 operator+=()、operator<<() 和append()。

QCborArray &QCborArray::operator+=(const QCborValue &v)

将v 追加到该数组中,并返回该数组的引用。

另请参阅 append()、insert()、operator+() 和operator<<()。

QCborArray &QCborArray::operator<<(const QCborValue &v)

将v 追加到该数组中,并返回该数组的引用。

另请参阅 append()、insert()、operator+() 和operator+=()。

[noexcept, since 6.10] QCborArray &QCborArray::operator=(QCborArray &&other)

移动赋值运算符。

被移动的对象other 将处于有效但未指定的状态。

该函数在 Qt 6.10 中引入。

[noexcept] QCborArray &QCborArray::operator=(const QCborArray &other)

将该数组的内容替换为other 中找到的内容,然后返回对此对象的引用。

QCborValueRef QCborArray::operator[](qsizetype i)

返回数组中位于位置i 的QCborValue 元素的引用。如果索引超出数组末尾,数组将自动扩展,并用未定义的条目填充,直到指定索引处存在条目为止。

QCborValueRef 与QCborValue 的 API 完全相同,但有一个重要区别:若为其赋值,该数组将更新为新值。

另请参阅 at(),first(),last(),insert(),prepend(),append(),removeAt() 以及takeAt()。

const QCborValue QCborArray::operator[](qsizetype i) const

返回数组中位于位置i 的QCborValue 元素。

如果数组的大小小于i 个元素,则该函数返回一个包含未定义值的QCborValue 。因此,无法通过该函数区分数组大小不足的情况与数组在位置i 处包含未定义值的情况。

另请参阅 at()、first()、last()、insert()、prepend()、append()、removeAt()、以及takeAt()。

相关非会员

[noexcept] bool operator!=(const QCborArray &lhs, const QCborArray &rhs)

比较lhs 和rhs 这两个数组,按顺序逐个元素进行比较,如果两个数组的内容不同,则返回 true,否则返回 false。

有关 Qt 中 CBOR 相等性的更多信息,请参阅QCborValue::compare()。

另请参阅 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() 以及operator<()。

[noexcept] bool operator<(const QCborArray &lhs, const QCborArray &rhs)

比较lhs 和rhs 这两个数组,依次比较每个元素,如果lhs 数组应在rhs 之前进行排序,则返回 true,否则返回 false。

有关 CBOR 排序顺序的更多信息,请参阅QCborValue::compare()。

另请参阅 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==()、operator!=() 以及operator<=()。

[noexcept] bool operator<=(const QCborArray &lhs, const QCborArray &rhs)

比较lhs 和rhs 这两个数组,按顺序逐个比较每个元素,如果lhs 数组应在rhs 之前进行排序,或者两个数组包含相同的元素,则返回 true;否则返回 false。

有关 CBOR 排序顺序的更多信息,请参阅QCborValue::compare()。

另请参阅 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==()、operator!=() 以及operator<()。

[noexcept] bool operator==(const QCborArray &lhs, const QCborArray &rhs)

比较lhs 和rhs 数组,按顺序逐个比较每个元素,如果两个数组包含相同的元素,则返回true;否则返回false。

有关 Qt 中 CBOR 相等性的更多信息,请参阅QCborValue::compare()。

另请参阅 compare()、QCborValue::operator==()、QCborMap::operator==()、operator!=() 以及operator<()。

[noexcept] bool operator>(const QCborArray &lhs, const QCborArray &rhs)

比较lhs 和rhs 这两个数组,按顺序逐个元素进行比较,如果lhs 数组在与rhs 数组比较后应排在前面,则返回true;否则返回false。

有关 CBOR 排序顺序的更多信息,请参阅QCborValue::compare()。

另请参阅 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==()、operator!=() 以及operator>=()。

[noexcept] bool operator>=(const QCborArray &lhs, const QCborArray &rhs)

比较lhs 和rhs 这两个数组,按顺序逐个元素进行比较,如果lhs 数组在rhs 之后应被排序,或者两个数组包含相同的元素,则返回true;否则返回false。

有关 CBOR 排序顺序的更多信息,请参阅QCborValue::compare()。

另请参阅 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==()、operator!=() 以及operator>()。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.