QCborValue类
QCborValue类封装了CBOR中的值。 更多信息...
头文件 | #include <QCborValue> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
- 所有成员的列表,包括继承的成员
- QCborValue是Qt中的CBOR支持的一部分。
注意:本类中所有函数都是可重入的。
公开类型
枚举 | DiagnosticNotationOption { 紧凑型, 换行, 扩展格式 } |
标志 | DiagnosticNotationOptions |
枚举 | EncodingOption { 不转换, 使用浮点数, 使用浮点16位, 使用整数 } |
标志 | EncodingOptions |
枚举 | Type { 整数, 字节数组, 字符串, 数组, 映射, …, Uuid } |
公开函数
QCborValue() | |
QCborValue(QCborValue::Type t_) | |
QCborValue(std::nullptr_t) | |
QCborValue(bool b) | |
QCborValue(qint64 i) | |
QCborValue(double d) | |
QCborValue(QCborSimpleType st) | |
QCborValue(const QByteArray &ba) | |
QCborValue(const QString &s) | |
QCborValue(QStringView s) | |
QCborValue(QLatin1StringView s) | |
QCborValue(const QCborArray &a) | |
QCborValue(QCborArray &&a) | |
QCborValue(const QCborMap &m) | |
QCborValue(QCborMap &&m) | |
QCborValue(QCborTag tag, const QCborValue &tv = QCborValue()) | |
QCborValue(QCborKnownTags tag, const QCborValue &tv = QCborValue()) | |
QCborValue(const QDateTime &dt) | |
QCborValue(const QUrl &url) | |
QCborValue(const QRegularExpression &rx) | |
QCborValue(const QUuid &uuid) | |
QCborValue(const QCborValue &other) | |
QCborValue(QCborValue &&other) | |
~QCborValue() | |
int | compare(const QCborValue &other) const |
bool | isArray() const |
bool | isBool() const |
bool | isByteArray() const |
bool | isContainer() const |
bool | isDateTime() const |
bool | isDouble() const |
bool | isFalse() const |
bool | isInteger() const |
bool | isInvalid() const |
bool | isMap() const |
bool | isNull() const |
bool | isRegularExpression() const |
bool | isSimpleType() const |
bool | isSimpleType(QCborSimpleType st) const |
bool | isString() const |
bool | isTag() const |
bool | isTrue() const |
bool | isUndefined() const |
bool | isUrl() const |
bool | isUuid() const |
void | swap(QCborValue &other) |
QCborTag | tag(QCborTag defaultValue = QCborTag(-1)) const |
QCborValue | taggedValue(const QCborValue &defaultValue = QCborValue()) const |
QCborArray | toArray() const |
QCborArray | toArray(const QCborArray &defaultValue) const |
bool | toBool(bool defaultValue = false) const |
QByteArray | toByteArray(const QByteArray &defaultValue = {}) const |
QByteArray | toCbor(QCborValue::EncodingOptions opt = NoTransformation) const |
void | toCbor(QCborStreamWriter &writer, QCborValue::EncodingOptions opt = NoTransformation) const |
QDateTime | toDateTime(const QDateTime &defaultValue = {}) const |
QString | toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opts = Compact) const |
double | toDouble(double defaultValue = 0) const |
qint64 | toInteger(qint64 defaultValue = 0) const |
QJsonValue | toJsonValue() const |
QCborMap | toMap() const |
QCborMap | toMap(const QCborMap &defaultValue) const |
QRegularExpression | toRegularExpression(const QRegularExpression &defaultValue = {}) const |
QCborSimpleType | toSimpleType(QCborSimpleType defaultValue = QCborSimpleType::Undefined) const |
QString | toString(const QString &defaultValue = {}) const |
QUrl | toUrl(const QUrl &defaultValue = {}) const |
QUuid | toUuid(const QUuid &defaultValue = {}) const |
QVariant | toVariant() const |
QCborValue::Type | type() const |
bool | operator!=(const QCborValue &other) const |
bool | operator<(const QCborValue &other) const |
QCborValue & | operator=(const QCborValue &other) |
QCborValue & | operator=(QCborValue &&other) |
bool | operator==(const QCborValue &other) const |
const QCborValue | operator[](const QString &key) const |
const QCborValue | operator[](QLatin1StringView key) const |
const QCborValue | operator[](qint64 key) const |
QCborValueRef | operator[](qint64 key) |
QCborValueRef | operator[](QLatin1StringView key) |
QCborValueRef | operator[](const QString &key) |
静态公有成员
QCborValue | fromCbor(QCborStreamReader &reader) |
QCborValue | fromCbor(const QByteArray &ba, QCborParserError *error = nullptr) |
QCborValue | fromCbor(const char *data, qsizetype len, QCborParserError *error = nullptr) |
QCborValue | fromCbor(const quint8 *data, qsizetype len, QCborParserError *error = nullptr) |
QCborValue | fromJsonValue(const QJsonValue &v) |
QCborValue | fromVariant(const QVariant &variant) |
详细描述
此类可用于存储CBOR中可用的许多类型之一。CBOR是紧凑的二进制对象表示法,是一种非常紧凑的二进制数据编码形式,是JSON的超集。它由IETF约束RESTful环境(CoRE)工作组创建,该工作组在许多新的RFC中使用了它。它打算与CoAP协议一起使用。
CBOR包含三组内置类型
- 基本类型:整数、浮点数(双精度)、布尔值、null等。
- 类似于字符串的类型:字符串和字节数组
- 容器:数组和映射
此外,CBOR通过将“标签”关联到上述类型之一来支持类型扩展形式。例如,UUID通过标签和包含UUID内容的16字节字节数组表示。QCborValue支持通过Qt类(如QUuid)直接创建和解码这些扩展类型。
有关完整列表,请参阅QCborValue::Type。使用type()或“isXxxx”函数之一可以查询QCborValue的类型。
扩展类型和标记值
标记值是与一个数字配对的常规QCborValue,该数字是其标签。有关API中使用的标签以及完整、正式列表的更多信息,请参阅QCborKnownTags。这些组合形成了扩展类型。
QCborValue在API中支持某些扩展类型,如URL(使用QUrl)和UUID(使用QUuid)。API不支持的其他扩展类型由Tag类型的QCborValue表示。标签可以通过tag()检索,而标记值则通过taggedValue()检索。
为了支持未来兼容性,包含扩展Qt类型的QCborValue与相同内容的标签类型相比是相等的。换句话说,以下表达式是真的
QCborValue(uuid) == QCborValue(QCborKnownTags::Uuid, uuid.toRfc4122());
未定义和null值
QCborValue可以包含一个值为“null”的值,它不属于任何特定类型。它类似于C++中的std::nullptr_t
类型,其唯一可能的值是nullptr
。QCborValue有一个接受此类型的构造函数,并创建一个null QCborValue。
空值用于表示一个可选值不存在。在这方面,当取消选择时,它与C++标准库类型std::optional
相似。与C++类型不同,CBOR null只是一个类型名为“Null”,并且无法确定它替换的是什么具体类型。
QCborValue 还可以是未定义类型,它表示“未定义”的值。事实上,这就是 QCborValue 默认构造函数所创建的。
未定义值与 null 值不同。null 用于表示未提供的可选值,而 undefined 通常用于表示无法提供预期值,通常由于错误或无法满足的先决条件。
此类值是完全有效的,可能出现在 CBOR 流中,与 JSON 内容和 QJsonValue 的未定义位不同。但像 QJsonValue 的 Undefined 一样,它是由 CBOR 容器的 value() 或只读操作符 [] 返回的,因为这些操作涉及无效的查找(对于 QCborArray,索引超出范围;对于 QCborMap,未找到键)。无法区分这种情况和 Undefined 的值,因此如果需要这样做,请检查 QCborArray 的大小,并使用 QCborMap 迭代器 API。
简单类型
CBOR 支持额外的简单类型,就像 Null 和 Undefined 一样,它们不携带其他值。它们可以互换地称为“简单类型”和“简单值”。CBOR 将布尔值编码为两种不同的类型(一个用于 true
,一个用于 false
),但 QCborValue 为它们提供了一个方便的 API。
目前没有其他定义的 CBOR 简单类型。QCborValue 通过 API 如 isSimpleType() 和 toSimpleType() 支持它们,这些 API 可用于与 Qt API 更新前的未来规范保持兼容。在相关规范发布之前不建议使用它们,因为其他 CBOR 实现可能不完全支持它们。
CBOR 支持
QCborValue 支持创建规范和严格流所需的全部 CBOR 功能。它几乎实现了在 RFC 7049 中指定的所有功能。
以下表格列出了 QCborValue 支持的 CBOR 功能。
功能 | 支持 |
---|---|
无符号数 | 是 (qint64 范围) |
负数 | 是 (qint64 范围) |
字节字符串 | 是 |
文本字符串 | 是 |
分块字符串 | 见下文 |
标签 | 是(任意) |
布尔值 | 是 |
Null | 是 |
未定义 | 是 |
任意简单值 | 是 |
半精度浮点(16位) | 是 |
单精度浮点(32位) | 是 |
双精度浮点(64位) | 是 |
无穷和 NaN 浮点数 | 是 |
确定长度的数组和映射 | 是 |
不确定长度的数组和映射 | 是 |
除了字符串和整数之外的字段键类型 | 是(任意) |
QCborValue 中的整数限制在 qint64 类型范围内。也就是说,从 -9,223,372,036,854,775,808 (-263) 到 9,223,372,036,854,775,807 (263 - 1)。CBOR 本身可以表示超出此范围的整数值,但 QCborValue 不支持这些值。在解码包含这些值之一的流时,使用 fromCbor(),QCborValue 会自动转换为 Double,这可能会丢失高达 11 位精度。
fromCbor() 可以解码分块字符串,但始终会将块合并到单个 QCborValue 中。因此,使用 toCbor()(这是规范所要求的)时始终写入非分块字符串。
QCborValue 会将 CBOR 流中的半精度和单精度浮点值始终转换为双精度。函数 toCbor() 可以接收一个参数,指示重新创建它们。
QCborValueRef
QCborValueRef 是用于 QCborArray 和 QCborMap 的辅助类。您在使用这些类中的任何一个可变 API 时会得到此类型。与 QCborValue 不同,可以为此类分配新值。当这样做时,它引用的数组或映射将被新值修改。在所有其他方面,其 API 与 QCborValue 完全相同。
{CBOR 数据解析和显示}
另请参阅 QCborArray,QCborMap,QCborStreamReader,QCborStreamWriter,QJsonValue,QJsonDocument,序列化转换器 和 保存和加载游戏。
成员类型文档
enum QCborValue::DiagnosticNotationOption
flags QCborValue::DiagnosticNotationOptions
此枚举用于 toDiagnosticNotation() 函数的选项参数中,以修改输出格式。
常量 | 值 | 说明 |
---|---|---|
QCborValue::Compact | 0x00 | 不使用任何换行符,生成紧凑表示形式。 |
QCborValue::LineWrapped | 0x01 | 使用换行符,每行一个 QCborValue。 |
QCborValue::ExtendedFormat | 0x02 | 使用一些不同的选项来表示值,这些选项在 RFC 7049 中找不到。这些选项可能会更改。 |
目前,ExtendedFormat
将更改字节数组的表示方式。没有它,它们始终以十六进制编码,不带空格。有它时,QCborValue::toCbor() 将使用带有空格的十六进制、base64 或 base64url 编码,具体取决于上下文。
The DiagnosticNotationOptions 类型是 QFlags<DiagnosticNotationOption> 的 typedef。它存储 DiagnosticNotationOption 值的 OR 组合。
另请参阅 toDiagnosticNotation。
enum QCborValue::EncodingOption
flags QCborValue::EncodingOptions
此枚举用于 toCbor() 函数的选项参数,以修改编码器的行为。
常量 | 值 | 说明 |
---|---|---|
QCborValue::NoTransformation | 0 | (默认) 不执行任何转换。 |
QCborValue::UseFloat | 0x02 | 指示编码器尽可能使用 IEEE 754 单精度浮点数(即,float )。 |
QCborValue::UseFloat16 | UseFloat | 0x04 | 指示编码器尽可能使用 IEEE 754 半精度浮点数(即,qfloat16 ),这隐含了 UseFloat 。 |
QCborValue::UseIntegers | 0x08 | 指示编码器在类型为 Double 的值包含整数时使用整数。 |
使用 UseFloat16
是在规范格式中编码流所必需的,但除此之外不必要。
The EncodingOptions 类型是 QFlags<EncodingOption> 的 typedef。它存储 EncodingOption 值的 OR 组合。
另请参阅 toCbor。
enum QCborValue::Type
此枚举表示 QCborValue 类型。它由 type() 函数返回。
CBOR 内置类型包括
常量 | 值 | 说明 |
---|---|---|
QCborValue::Integer | 0x00 | qint64 :一个整数值 |
QCborValue::ByteArray | 0x40 | QByteArray:一个字节数组(“字节字符串”) |
QCborValue::String | 0x60 | QString:一个 Unicode 字符串(“文本字符串”) |
QCborValue::Array | 0x80 | QCborArray:一个 QCborValues 数组 |
QCborValue::Map | 0xa0 | QCborMap:QCborValue的关联容器 |
QCborValue::SimpleType | 0x100 | QCborSimpleType:几个简单类型/值之一 |
QCborValue::False | SimpleType + int(QCborSimpleType::False) | bool :值false 的简单类型 |
QCborValue::True | SimpleType + int(QCborSimpleType::True) | bool :值true 的简单类型 |
QCborValue::Null | SimpleType + int(QCborSimpleType::Null) | std::nullptr_t :空值的简单类型 |
QCborValue::Undefined | SimpleType + int(QCborSimpleType::Undefined) | (无类型) 未定义值的简单类型 |
QCborValue::Double | 0x202 | double :双精度浮点数 |
QCborValue::Invalid | -1 | 不是一个有效的值,这通常表示CBOR解码错误 |
此外,QCborValue还可以表示扩展类型
常量 | 值 | 说明 |
---|---|---|
QCborValue::Tag | 0xc0 | 一个未知或未被识别的扩展类型,通过其标签(QCborTag)和标记值(一个QCborValue)表示 |
QCborValue::DateTime | 0x10000 | QDateTime:日期和时间戳 |
QCborValue::Url | 0x10020 | QUrl:URL或URI |
QCborValue::RegularExpression | 0x10023 | QRegularExpression:正则表达式的模式 |
QCborValue::Uuid | 0x10025 | QUuid:UUID |
参见 类型。
成员函数文档
QCborValue::QCborValue(QCborArray &&a)
QCborValue::QCborValue(const QCborArray &a)
使用数组a创建一个QCborValue。可以使用toArray()在以后检索该数组。
使用映射m创建一个QCborValue。可以使用toMap()在以后检索该映射。
QCborValue::QCborValue(QCborKnownTags tag, const QCborValue &tv = QCborValue())
QCborValue::QCborValue(QCborTag tag, const QCborValue &tv = QCborValue())
创建一个代表标签值tag,标记值tv的扩展类型QCborValue。可以使用tag()检索标签,使用taggedValue()检索标记值。
参见 isTag(),tag(),taggedValue() 以及 QCborKnownTags。
QCborArray QCborValue::toArray() const
QCborArray QCborValue::toArray(const QCborArray &defaultValue) const
返回此 QCborValue 中存储的数组值,如果它是数组类型。否则返回 defaultValue。
注意,此函数不会将其他类型转换为 QCborArray。
参见 isArray(),isByteArray(),isMap(),isContainer() 和 toMap()。
如果此 QCborValue 是映射类型,则返回存储在其中的映射值。否则返回 defaultValue。
注意,此函数不会将其他类型转换为 QCborMap。
参见 isMap(),isArray(),isContainer() 和 toArray()。
[静态]
QCborValue QCborValue::fromCbor(const char *data, qsizetype len, QCborParserError *error = nullptr)
[静态]
QCborValue QCborValue::fromCbor(const quint8 *data, qsizetype len, QCborParserError *error = nullptr)
这是一个重载函数。
将 data 的 len 字节转换为 QByteArray,然后调用接受 QByteArray 的此函数重载,如果提供了 error,也会传过去。
QCborValue::QCborValue()
创建一个类型为 Undefined 的 QCborValue。
CBOR 未定义值用于表示信息缺失,通常是上一次操作未按预期完成的结果。它们也由 QCborArray 和 QCborMap API 用于表示要查找的项目未找到。
未定义值由 Undefined simple type 表示。因此,带有未定义值的 QCborValue 也将返回 true 对 isSimpleType() 和 isSimpleType(QCborSimpleType::Undefined)
。
未定义值与空值不同。
带有未定义值的QCborValue对象也与无效的QCborValue对象不同。API不会创建无效的QCborValue,但可能在解析错误的结果中存在。
相关内容:isUndefined()、isNull() 和 isSimpleType()。
QCborValue::QCborValue(QCborValue::Type )
创建一个类型为 的QCborValue。与该类型关联的值(如果有)将被默认构造。
参见 类型。
QCborValue::QCborValue(std::nullptr_t)
创建一个 Null 类型的QCborValue。
CBOR空值用于表示未提供的可选值。它们与未定义值不同,因为空值通常不是早前错误或问题的结果。
相关内容:isNull()、isUndefined() 和 isSimpleType()。
QCborValue::QCborValue(bool )
创建一个布尔值为 的QCborValue。该值以后可以用 toBool() 方法检索。
内部,CBOR布尔值由一对类型表示,一个用于true,一个用于false。因此,布尔QCborValue将对 isSimpleType() 和 isSimpleType(QCborSimpleType::False)
或 isSimpleType(QCborSimpleType::True)
中的一个返回true。
相关内容:toBool()、isBool()、isTrue()、isFalse() 和 isSimpleType()。
QCborValue::QCborValue(qint64 )
创建一个整数值为 的QCborValue。此值以后可以用 toInteger() 方法检索。
CBOR整数值与浮点值不同。因此,即使对象中包含的值相同,包含整数的QCborValue对象与包含浮点数的QCborValue对象也会进行比较。
相关内容:toInteger()、isInteger() 和 isDouble()。
QCborValue::QCborValue(double )
创建一个浮点值为 的QCborValue。此值以后可以用 toDouble() 方法检索。
CBOR浮点值与整数值不同。因此,即使对象中包含的值相同,包含整数的QCborValue对象与包含浮点数的QCborValue对象也会进行比较。
相关内容:toDouble()、isDouble() 和 isInteger()。
QCborValue::QCborValue(QCborSimpleType )
创建一个简单类型为 的QCborValue。类型可以用 toSimpleType() 以及 isSimpleType(st) 方法检索。
CBOR简单类型是没有关联值的类型,如C++的 std::nullptr_t
类型,它的唯一可能值是 nullptr
。
如果st是QCborSimpleType::Null
,则相应的QCborValue将是空值类型,类似地,如果st是QCborSimpleType::Undefined
,也会有相同的结果。如果st是QCborSimpleType::False
或QCborSimpleType::True
,则创建的QCborValue将是一个分别包含false或true值的布尔值。
此函数可以用于API中未定义的简单类型。例如,要创建一个具有简单类型12的QCborValue,可以编写:
QCborValue value(QCborSimpleType(12));
简单类型应该在相应的规范发布之前不要使用,因为其他实现可能无法正确支持它们。简单类型值24到31被保留,不得使用。
isSimpleType(),isNull(),isUndefined(),isTrue(),isFalse()
QCborValue(const QByteArray &ba)
使用字节数组值ba创建一个QCborValue。可以使用toByteArray()方法稍后检索该值。
参见toByteArray(),isByteArray()和isString()。
QCborValue(const QString &s)
使用字符串值s创建一个QCborValue。可以稍后使用toString()方法检索该值。
参见toString(),isString()和isByteArray()。
QCborValue(QStringView s)
使用字符串值s创建一个QCborValue。可以稍后使用toString()方法检索该值。
参见toString(),isString()和isByteArray()。
QCborValue(QLatin1StringView s)
这是一个重载函数。
使用由s检索的拉丁-1字符串创建一个QCborValue。可以稍后使用toString()方法检索该值。
参见toString(),isString()和isByteArray()。
[显式]
QCborValue(const QDateTime &dt)
创建一个包含由dt表示的日期/时间扩展值的QCborValue对象。可以使用toDateTime()方法稍后检索该值。
CBOR日期/时间类型是使用标记作为扩展类型的:要么是一个标记为DateTime的字符串(以ISO日期格式),要么是一个标记为UnixTime_t的数字(自1970年1月1日起的秒数,UTC)。在解析CBOR流时,QCborValue会将UnixTime_t转换为基于字符串的类型。
参见toDateTime(),isDateTime()和taggedValue()。
[显式]
QCborValue(const QUrl &url)
创建一个包含由url表示的URL扩展值的QCborValue对象。可以稍后使用toUrl()方法检索该值。
CBOR URL 类型是一个扩展类型,由标签为Url的字符串表示。
另请参阅toUrl(),isUrl(),以及taggedValue。
[explicit]
QCborValue::QCborValue(const QRegularExpression &rx)
创建一个 QCborValue 对象,其类型为正则表达式扩展类型,包含由 rx 表示的值。可以使用 toRegularExpression() 在以后检索该值。
CBOR 正则表达式类型是一个扩展类型,由标签为RegularExpression的字符串表示。请注意,CBOR 正则表达式只存储模式,因此 QRegularExpression 对象可能携带的任何标记都将丢失。
另请参阅toRegularExpression(),isRegularExpression(),以及taggedValue。
[explicit]
QCborValue::QCborValue(const QUuid &uuid)
创建一个 QCborValue 对象,其类型为 UUID 扩展类型,包含由 uuid 表示的值。可以使用 toUuid() 在以后检索该值。
CBOR UUID 类型是一个扩展类型,由标签为Uuid的字节数组表示。
另请参阅toUuid(),isUuid(),以及taggedValue。
[noexcept]
QCborValue::QCborValue(const QCborValue &other)
将 other 的内容复制到该对象中。
[noexcept]
QCborValue::QCborValue(QCborValue &&other)
这是一个重载函数。
将 other QCborValue 对象的内容移动到该对象中,并释放此对象的所有资源。
[noexcept]
QCborValue::~QCborValue()
销毁当前的 QCborValue 对象,并释放任何关联的资源。
int QCborValue::compare(const QCborValue &other) const
比较此值和 other,并返回一个整数,表示此值是否应排在 other 之前(如果结果为负)或之后(如果结果为正)。如果此函数返回 0,则两个值相等并包含相同的内部内容。
如果每个 QCborValue 均包含一个数组或映射,则比较将递归到它们包含的元素中。
扩展类型
QCborValue 与包含扩展类型(如 Url 和 Url及其相应的标记表示形式)的 QCborValue 相等。例如,以下表达式为真
QCborValue(QUrl("https://example.com")) == QCborValue(QCborKnownTags::Url, "https://example.com");
请注意,像QUrl和QDateTime这样的Qt类型会对它们的参数进行标准化和其他修改。上述表达式之所以成立,仅仅是因为右侧的字符串是左侧的QCborValue所采用的标准化的值。例如,如果两边的“https”部分都是大写,比较将失败。有关QCborValue执行的标准化信息,请参阅采用相应Qt类型的构造函数的文档。
排序顺序
在CBOR中,排序顺序由RFC 7049,第3.9节定义,该节讨论了在遵循规范编码时在映射中键的排序。根据规范,“对键数据项的表示形式进行排序”,并列出以下后果:
- "如果两个键的长度不同,则较短的键先排序;"
- "如果两个键的长度相同,则按字节顺序值较低的键先排序。"
这导致了令人意想不到的QCborValue排序,此函数的结果与稍后通过比较包含的元素检索到的结果不同。例如,包含字符串“zzz”的QCborValue排在包含字符串“foobar”的QCborValue之前,尽管当作为QStrings或QByteArrays比较时,“zzz”排在“foobar”之后(字典顺序)。
规范没有清楚地指出应如何对不同类型的值进行排序(它说排序不应该注意主类型的3/5位分割)。QCborValue假定类型也应该排序。类型枚举的QCborValue::Type的数值按此顺序排列,上述扩展类型除外,它们按它们的带标签等效项比较。
注意:排序顺序是初步的,可能随时更改。目前,应用程序不应依赖此函数返回的顺序。
另请参阅QCborArray::compare(),QCborMap::compare()和运算符==()。
[静态]
QCborValue QCborValue::fromCbor(QCborStreamReader &reader)
从找到的CBOR流中解码一个项目,并返回等效表示。此函数是递归的:如果项目是映射或数组,它将解码映射或数组中找到的所有项目,直到最外层对象完成。
不需要在此QCborStreamReader的根元素上使用此函数。例如,以下代码说明了如何从文件开头跳过CBOR签名标签
if (reader.isTag() && reader.toTag() == QCborKnownTags::Signature) reader.next(); QCborValue contents = QCborValue::fromCbor(reader);
返回的值可能部分完整且与有效的QCborValue难以区分,即使解码失败。要确定是否发生错误,请检查reader.lastError
另请参阅toCbor,toDiagnosticNotation,toVariant和toJsonValue()。
[静态]
QCborValue QCborValue::fromCbor(const QByteArray &ba, QCborParserError *error = nullptr)
这是一个重载函数。
解码从字节数组 ba 中找到的 CBOR 流中的一个项,并返回等效表示。该函数是递归的:如果项是映射或数组,它将解码在映射或数组中找到的所有项,直到最外层对象完成。
如果发生错误,此函数将错误状态存储在由 error 指向的对象中,包括错误发生的偏移。如果没有发生错误,它在错误状态中存储 NoError,并存储它消耗的字节数(即,它存储第一个未使用字节的偏移)。使用这些信息可以解析同一个字节数组中可能存在的其他数据。
返回值可能是不完整的,即使解码失败也可能与有效的 QCborValue 无法区分。要确定是否发生错误,请检查 error 中是否存储了错误。此函数在第一次错误发生后立即停止解码。
另请参阅toCbor,toDiagnosticNotation,toVariant和toJsonValue()。
[静态]
QCborValue QCborValue::fromJsonValue(const QJsonValue &v)
将 v 中的 JSON 值转换为对应的 CBOR 值并返回它。从 JSON 到 CBOR 的转换没有数据损失,因为 CBOR 类型集比 JSON 更丰富。此外,使用此函数转换到 CBOR 的值可以使用 toJsonValue() 无数据损失地转换回 JSON。
以下表格列出了 JSON 类型到 CBOR 类型的映射
JSON 类型 | CBOR 类型 |
---|---|
布尔 | 布尔 |
数字 | 整数(如果数字没有小数部分且在 qint64 范围内)或双精度浮点数 |
字符串 | 字符串 |
数组 | 数组 |
对象 | 映射 |
Null | Null |
QJsonValue 也可以是未定义的,表示之前未能完成操作(例如,在一个对象中搜索不存在键)。未定义的值不是 JSON 类型,并且可能不出现在 JSON 数组和对象中,但此函数会在相应的 QJsonValue 是未定义的时返回 QCborValue 未定义值。
另请参阅 toJsonValue(),fromVariant(),QCborArray::fromJsonArray() 和 QCborMap::fromJsonObject()。
[静态]
QCborValue QCborValue::fromVariant(const QVariant &variant)
将 QVariant variant 转换为 QCborValue 并返回它。
QVariants 可能包含大量不同的元类型,其中许多在 CBOR 中没有对应的表示。这包括所有用户定义的元类型。在准备使用 CBOR 进行传输时,建议仔细编码每个值以防止表示丢失。
以下表格列出了此函数将应用的转换
Qt (C++) 类型 | CBOR 类型 |
---|---|
无效 (QVariant()) | 未定义 |
bool | 布尔 |
std::nullptr_t | Null |
short ,ushort ,int ,uint ,qint64 | 整数 |
quint64 | 整数,或者如果超出qint64范围,则使用Double |
浮点数 ,双精度浮点数 | 双精度浮点数 |
QByteArray | 字节数组 |
QDateTime | 日期时间 |
QCborSimpleType | 简单类型 |
QJsonArray | 数组,使用QCborArray::formJsonArray()转换 |
QJsonDocument | 数组或映射 |
QJsonObject | 映射,使用QCborMap::fromJsonObject()转换 |
QJsonValue | 使用fromJsonValue()转换 |
QRegularExpression | 正则表达式 |
QString | 字符串 |
QStringList | 数组 |
QVariantHash | 映射 |
QVariantList | 数组 |
QVariantMap | 映射 |
QUrl | URL |
QUuid | UUID |
如果QVariant::isNull()返回true,无论QVariant携带的类型是什么,都将返回或插入到列表或对象中的null QCborValue。注意,Qt 6.0中的行为更改将影响QVariant::isNull(),这也会影响此函数。
对于其他未列出的类型,将尝试转换为字符串,通常通过调用QVariant::toString()。如果转换失败,则值将被替换为未定义的CBOR值。请注意,QVariant::toString()对于大多数类型都是损失性的。
请注意,通过QVariant::toString()进行的转换可能会随时更改。未来QVariant和QCborValue可能被扩展以支持更多类型,这将导致此函数执行转换的方式发生变化。
另请参阅toVariant()、fromJsonValue()、QCborArray::toVariantList()、QCborMap::toVariantMap()和QJsonValue::fromVariant()。
bool QCborValue::isArray() const
如果此QCborValue是数组类型,则返回true。可以使用toArray()获取数组值。
bool QCborValue::isBool() const
如果此QCborValue是布尔值,则返回true。可以使用toBool()获取值。
另请参阅type()、toBool()、isTrue()和isFalse()。
bool QCborValue::isByteArray() const
如果此QCborValue是字节数组类型,则返回true。可以使用toByteArray()获取字节数组值。
另请参阅type()和toByteArray()。
bool QCborValue::isContainer() const
此便捷函数返回true,如果QCborValue是数组或映射。
bool QCborValue::isDateTime() const
如果此QCborValue是日期/时间类型,则返回true。可以使用toDateTime()获取值。日期/时间是使用标签DateTime的扩展类型。
另外,在从CBOR流解码时,QCborValue还将解释值为UnixTime_t的标签,并将它们转换为等效的日期/时间。
另请参阅type() 和 toDateTime()。
bool QCborValue::isDouble() const
如果此 QCborValue 是浮点类型,则返回 true。可以使用 toDouble() 获取值。
bool QCborValue::isFalse() const
如果此 QCborValue 是具有 false 值的布尔值,则返回 true。该函数存在是因为,在内部,CBOR 布尔值存储为两种不同的类型,一种用于 true,一种用于 false。
另请参阅type()、isBool()、isTrue() 和 toBool()。
bool QCborValue::isInteger() const
如果此 QCborValue 是整数类型,则返回 true。可以使用 toInteger() 获取整数值。
bool QCborValue::isInvalid() const
如果此 QCborValue 不是一个有效的类型,则返回 true。无效的 QCborValue 与具有未定义值的那些不同,它们通常表示解码错误。
另请参阅isUndefined() 和 isNull().
bool QCborValue::isMap() const
如果此 QCborValue 是映射类型,则返回 true。可以使用 toMap() 获取映射值。
bool QCborValue::isNull() const
如果此 QCborValue 是 null 类型,则返回 true。
CBOR空值用于表示未提供的可选值。它们与未定义值不同,因为空值通常不是早前错误或问题的结果。
null 值与未定义值和无效的 QCborValue 对象不同。API 不会创建无效的 QCborValue,但它们可能是解析错误的结果。
另请参阅type()、isUndefined() 和 isInvalid()。
bool QCborValue::isRegularExpression() const
如果此 QCborValue 包含正则表达式模式,则返回 true。可以使用 toRegularExpression() 获取模式。
另请参阅type() 和 toRegularExpression()。
bool QCborValue::isSimpleType() const
如果此 QCborValue 是 CBOR 简单类型之一,则返回 true。可以使用 type() 在以后检索类型本身,即使类型在 API 中没有枚举也是如此。它们还可以使用 isSimpleType(QCborSimpleType) 重载进行检查。
另请参阅 QCborSimpleType、isSimpleType(QCborSimpleType)和toSimpleType().
bool QCborValue::isSimpleType(QCborSimpleType st) const
这是一个重载函数。
如果此QCborValue是简单类型,并且toSimpleType()会返回
value.isSimpleType(QCborSimpleType(12));
另请参阅 QCborValue::QCborValue(QCborSimpleType)、isSimpleType()、isFalse()、isTrue()、isNull、isUndefined()和toSimpleType。
bool QCborValue::isString() const
如果此QCborValue是字符串类型,则返回true。可以通过toString()检索字符串值。
bool QCborValue::isTag() const
如果此QCborValue是标签类型,则返回true。可以使用tag()和taggedValue()检索标签值。
此函数也针对API已识别的扩展类型返回true。对于在Qt API更新之前直接处理扩展类型的代码,可以使用taggedValue()重建标签+标签值对。
另请参阅 type()、tag()、taggedValue()和taggedValue。
bool QCborValue::isTrue() const
如果此QCborValue的布尔值为true,则返回true。此函数存在,因为CBOR布尔类型在内部以两种类型存储,一种用于false,一种用于true。
另请参阅 type()、isBool()、isFalse和toBool。
bool QCborValue::isUndefined() const
如果此QCborValue是未定义类型,则返回true。
CBOR 未定义值用于表示信息缺失,通常是上一次操作未按预期完成的结果。它们也由 QCborArray 和 QCborMap API 用于表示要查找的项目未找到。
未定义值与null值不同。
具有未定义值的QCborValue对象也与无效的QCborValue对象不同。API不会创建无效的QCborValue对象,但它们可能是解析错误的结果。
bool QCborValue::isUrl() const
如果此QCborValue是URL类型,则返回true。可以通过toUrl()检索URL值。
bool QCborValue::isUuid() const
如果此 QCborValue 包含UUID,则返回true。可以使用 toUuid() 获取值。
[noexcept]
void QCborValue::swap(QCborValue &other)
交换此 QCborValue 对象和 other 的内容。
QCborTag QCborValue::tag(QCborTag defaultValue = QCborTag(-1)) const
如果此扩展 QCborValue 对象为标签类型,则返回其标签,否则返回 defaultValue。
CBOR通过将与存储表示相关联的数字(标签)表示扩展类型。此函数返回该数字。要获取表示,请使用 taggedValue()。
另请参阅 isTag(),taggedValue(),isDateTime(),isUrl(),isRegularExpression() 和 isUuid()。
QCborValue QCborValue::taggedValue(const QCborValue &defaultValue = QCborValue()) const
如果此扩展 QCborValue 对象为标签类型,则返回其标签值,否则返回 defaultValue。
CBOR通过将数字(标签)与存储表示相关联来表示扩展类型。此函数返回该表示。要获取标签,请使用 tag()。
另请参阅 isTag(),tag(),isDateTime(),isUrl(),isRegularExpression() 和 isUuid()。
bool QCborValue::toBool(bool defaultValue = false) const
如果此 QCborValue 为布尔类型,则返回存储在其中的布尔值。否则,返回 defaultValue。
另请参阅 isBool(),isTrue() 和 isFalse()。
QByteArray QCborValue::toByteArray(const QByteArray &defaultValue = {}) const
如果此 QCborValue 为字节数组类型,则返回存储在其内的字节数组值。否则,返回 defaultValue。
请注意,此函数不执行从其他类型到 QByteArray 的转换。
另请参阅 isByteArray(),isString() 和 toString()。
QByteArray QCborValue::toCbor(QCborValue::EncodingOptions opt = NoTransformation) const
使用在 opt 中指定的选项将此 QCborValue 对象编码为其CBOR表示形式,并返回包含该表示形式的字节数组。
此函数不会失败,除非此QCborValue或包含的任何项如果您是一个映射或数组,是无效的。无效类型在API中不会正常生成,但可能由解码错误造成。
默认情况下,此函数不对QCborValue中的值执行转换,直接将所有浮点数写入为双精度(double
)类型。如果指定了UseFloat选项,它将使用单精度(float
)浮点数,表示不会因为这种表示方式而丢失精度。包括无穷大和NaN值。
同样地,如果指定了UseFloat16,此函数将尝试使用半精度(qfloat16
)浮点数,如果转换为该类型不会导致精度损失。这一点对于无穷大和NaN始终成立。
如果指定了UseIntegers,则对于包含实际整数的任何浮点值,它将使用整数。
另请参阅 fromCbor(),fromVariant()和fromJsonValue()。
void QCborValue::toCbor(QCborStreamWriter &writer, QCborValue::EncodingOptions opt = NoTransformation) const
这是一个重载函数。
将此QCborValue对象编码为其CBOR表示形式,并使用指定的opt选项和指定的writer写入器写入。相同的写入器可以被多个QCborValues使用,例如,为了在更大的数组中编码不同的元素。
此函数不会失败,除非此QCborValue或包含的任何项如果您是一个映射或数组,是无效的。无效类型在API中不会正常生成,但可能由解码错误造成。
默认情况下,此函数不对QCborValue中的值执行转换,直接将所有浮点数写入为双精度(二进制64)类型。如果指定了UseFloat选项,则将使用单精度(二进制32)浮点数,在保持精度的前提下用于任何浮点值。这包括无穷大和NaN值。
同样地,如果指定了UseFloat16,此函数将尝试使用半精度(二进制16)浮点数,如果转换为该类型不会导致精度损失。这始终适用于无穷大和NaN。
如果指定了UseIntegers,则对于包含实际整数的任何浮点值,它将使用整数。
另请参阅 fromCbor(),fromVariant()和fromJsonValue()。
QDateTime QCborValue::toDateTime(const QDateTime &defaultValue = {}) const
如果在扩展日期时间类型中,返回此QCborValue存储的日期时间值。否则返回defaultValue。
注意,此函数不会执行其他类型到QDateTime的转换。
另请参阅 isDateTime(),isTag()和taggedValue()。
QString QCborValue::toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opts = Compact) const
创建与当前CBOR对象等价的诊断表示,并返回它。该opts参数控制表示法的方言。诊断表示法在调试中非常有用,可以帮助开发者了解存储在QCborValue或CBOR流中的值。因此,Qt API不提供将诊断信息解析回内存格式或CBOR流的支撑,尽管这种表示形式是唯一的,并且可能会有所不同。
CBOR诊断表示法由RFC 7049的第6节定义。它是CBOR流的文本表示,与JSON非常相似,但支持在JSON中找不到的CBOR类型。由ExtendedFormat标志启用的扩展格式目前处于某些IETF草案中,其格式可能发生变化。
此函数产生的表示与toCbor()函数产生的表示相同,但不会提供任何转换选项。这也意味着,如果使用fromCbor()创建对象,并且该函数可能已应用了转换,则此函数可能不会产生创建对象所用的流表示,因为该函数可能会应用转换。要查看无转换的流的高保真表示,请参见cbordump示例。
另请参阅toCbor()和QJsonDocument::toJson。
double QCborValue::toDouble(double defaultValue = 0) const
如果当前QCborValue为Double类型,则返回存储在此处的浮点值。如果它是整数类型,此函数将返回将整数值转换为double的结果。在其他任何情况下,它返回defaultValue。
另请参阅isDouble()、isInteger和toInteger。
qint64 QCborValue::toInteger(qint64 defaultValue = 0) const
如果当前QCborValue为整数类型,则返回它存储的整数值。如果它是双精度类型,则此函数将返回将浮点值转换为整数的结果。在其他任何情况下,它返回defaultValue。
另请参阅isInteger()、isDouble和toDouble。
QJsonValue QCborValue::toJsonValue() const
将此QCborValue对象转换为等效的JSON表示,并以QJsonValue返回。
请注意,CBOR包含的值集比JSON更丰富和更广泛,因此在此转换中可能会丢失某些信息。以下表比较CBOR类型与JSON类型,并指出是否可能丢失信息。
CBOR 类型 | JSON 类型 | 注释 |
---|---|---|
布尔 | 布尔 | 无数据损失可能 |
双精度浮点数 | 数字 | 无穷大和NaN将转换为Null;其他值无数据损失 |
整数 | 数字 | 如果在转换中整数大于253或小于-253,则可能发生数据损失。 |
Null | Null | 无数据损失可能 |
未定义 | Null | 类型信息丢失 |
字符串 | 字符串 | 无数据损失可能 |
字节数组 | 字符串 | 转换为无损编码如Base64url,但字符串和字节数组之间的区别将丢失 |
其他简单类型 | 字符串 | 类型信息丢失 |
数组 | 数组 | 转换应用于每个包含的值 |
映射 | 对象 | 键转换为字符串;值根据此表转换 |
标签和扩展类型 | 特殊 | 标签本身已丢失,标记值将转换为JSON |
有关CBOR映射键转换为字符串的信息,请参见QCborMap::toJsonObject。
如果此QCborValue包含未定义的值,此函数也将返回一个未定义的QJsonValue。注意,JSON不支持未定义的值,未定义的QJsonValues是对规范的扩展。它们不能保存在一个QJsonArray或QJsonObject中,但可以从函数中返回以指示失败。在其他所有意图和目的上,它们与null相同。
标签和扩展类型的特殊处理
一些标签被特别处理,会改变标记值从CBOR到JSON的转换。下表列出了这些特殊情况
标签 | CBOR 类型 | 转换 |
---|---|---|
预期的Base64url | 字节数组 | 将字节数组编码为Base64url |
预期的Base64 | 字节数组 | 将字节数组编码为Base64 |
预期的Base16 | 字节数组 | 将字节数组编码为十六进制 |
URL | URL和字符串 | 使用QUrl::toEncoded()使编码规范化为URL的完全编码格式 |
UUID | UUID和字节数组 | 使用QUuid::toString()创建字符串表示 |
另请参阅fromJsonValue,toVariant,QCborArray::toJsonArray和QCborMap::toJsonObject。
QRegularExpression QCborValue::toRegularExpression(const QRegularExpression &defaultValue = {}) const
如果此QCborValue是正则表达式模式扩展类型,返回存储在其中的正则表达式值,否则返回defaultValue。
注意,此功能不会将其他类型转换为QRegularExpression。
另请参阅isRegularExpression,isTag和taggedValue。
QCborSimpleType QCborValue::toSimpleType(QCborSimpleType defaultValue = QCborSimpleType::Undefined) const
如果此QCborValue是简单类型,则返回该类型。如果不是简单类型,则返回defaultValue。
以下类型是简单类型,此函数将返回列出的值
QCborValue::False | QCborSimpleType::False |
QCborValue::True | QCborSimpleType::True |
QCborValue::Null | QCborSimpleType::Null |
QCborValue::Undefined | QCborSimpleType::Undefined |
另请参阅type,isSimpleType,isBool,isTrue,isFalse,isTrue,isNull和isUndefined。
QString QCborValue::toString(const QString &defaultValue = {}) const
如果此QCborValue是字符串类型,则返回存储在此中的字符串值,否则返回defaultValue。
请注意,此函数不会将其他类型转换为 QString。
另见 isString(),isByteArray() 和 toByteArray()。
QUrl QCborValue::toUrl(const QUrl &defaultValue = {}) const
如果此 QCborValue 是 URL 扩展类型,则返回存储在其中的 URL 值。否则,返回 defaultValue。
请注意,此函数不会将其他类型转换为 QUrl。
另见 isUrl(),isTag() 和 taggedValue()。
QUuid QCborValue::toUuid(const QUuid &defaultValue = {}) const
如果此 QCborValue 是 UUID 扩展类型,则返回存储在其中的 UUID 值。否则,返回 defaultValue。
请注意,此函数不会将其他类型转换为 QUuid。
另见 isUuid(),isTag() 和 taggedValue()。
QVariant QCborValue::toVariant() const
将此值转换为本地 Qt 类型,并返回相应的 QVariant。
下表列出了 QCborValue 类型 和 Qt 元类型 之间的映射。
CBOR 类型 | Qt 或 C++ 类型 | 备注 |
---|---|---|
整数 | qint64 | |
双精度浮点数 | double | |
布尔 | bool | |
Null | std::nullptr_t | |
未定义 | 无类型 (QVariant()) | |
字节数组 | QByteArray | |
字符串 | QString | |
数组 | QVariantList | 递归转换所有值 |
映射 | QVariantMap | 键类型将被 "字符串化" |
其他简单类型 | QCborSimpleType | |
日期时间 | QDateTime | |
URL | QUrl | |
正则表达式 | QRegularExpression | |
UUID | QUuid | |
其他标签 | 特殊 | 忽略该标签,并使用该函数转换标签值 |
请注意,CBOR 地图和数组中的值也将使用此函数递归转换,并以 QVariantMap 和 QVariantList 的形式存储。您不会在 QVariants 中找到 QCborMap 和 QCborArray。
与 CBOR 不同,QVariantMaps 使用字符串键,因此将 QCborMap 转换为 QVariantMap 将隐含对键值的 "字符串化"。有关详细信息,请参阅 QCborMap::toJsonObject()。
另见 fromVariant(),toJsonValue(),QCborArray::toVariantList() 和 QCborMap::toVariantMap()。
QCborValue::Type QCborValue::type() const
返回此 QCborValue 的类型。该类型也可以稍后通过 "isXxx" 中的一个函数检索。
另请参阅 isInteger()函数,isByteArray()函数,isString()函数,isArray()函数,isMap()函数,isTag()函数,isFalse()函数,isTrue()函数,isBool()函数,isNull()函数,isUndefined函数,isDouble()函数,isDateTime()函数,isUrl()函数,isRegularExpression()函数,以及isUuid()函数。
[noexcept]
bool QCborValue::operator!=(const QCborValue &other) const
比较当前值和other,如果内容不同,返回true,否则返回false。如果每个QCborValue包含数组或映射,则比较会递归到包含的元素中。
有关Qt中CBOR相等性的更多信息,请参阅QCborValue::compare()。
另请参阅 compare(),QCborValue::operator==(),QCborMap::operator==(),operator==(),和operator<()。
bool QCborValue::operator<(const QCborValue &other) const
比较当前值和other,如果当前值应该在other之前排序,返回true,否则返回false。如果每个QCborValue包含数组或映射,则比较会递归到包含的元素中。
有关CBOR排序顺序的更多信息,请参阅QCborValue::compare()。
另请参阅 compare(),QCborValue::operator==(),QCborMap::operator==(),operator==(),和operator!=()。
[noexcept]
QCborValue &QCborValue::operator=(const QCborValue &other)
用other的副本替换此QCborValue的内容。
[noexcept]
QCborValue &QCborValue::operator=(QCborValue &&other)
这是一个重载函数。
将other的QCborValue对象的内容移动到当前对象中,并释放此对象占用的资源。返回对当前对象的引用。
[noexcept]
bool QCborValue::operator==(const QCborValue &other) const
检查当前值和other是否含有相同内容,如果相同返回true,否则返回false。如果每个QCborValue包含数组或映射,则比较会递归到包含的元素中。
有关Qt中CBOR相等性的更多信息,请参阅compare
。
另请参阅 compare(),QCborValue::operator==(),QCborMap::operator==(),operator!=() 和 operator<。
const QCborValue QCborValue::operator[](const QString &key) const
如果这个 QCborValue 是一个 QCborMap,则在元素中搜索与 key 匹配的值。如果在映射中没有匹配的 key 或者这个 QCborValue 对象不是一个映射,则返回未定义值。
此函数等价于
value.toMap().value(key);
另请参阅 operator[](qint64),QCborMap::operator[],QCborMap::value() 和 QCborMap::find。
const QCborValue QCborValue::operator[](QLatin1StringView key) const
这是一个重载函数。
如果这个 QCborValue 是一个 QCborMap,则在元素中搜索与 key 匹配的值。如果在映射中没有匹配的 key 或者这个 QCborValue 对象不是一个映射,则返回未定义值。
此函数等价于
value.toMap().value(key);
另请参阅 operator[](qint64),QCborMap::operator[],QCborMap::value() 和 QCborMap::find。
const QCborValue QCborValue::operator[](qint64 key) const
这是一个重载函数。
如果这个 QCborValue 是一个 QCborMap,则在元素中搜索与 key 匹配的值。如果是 QCborArray,则返回索引为 key 的元素。如果数组或映射中没有匹配的值,或者这个 QCborValue 对象不是数组或映射,则返回未定义值。
另请参阅 operator[],QCborMap::operator[],QCborMap::value(),QCborMap::find,QCborArray::operator[] 和 QCborArray::at。
QCborValueRef QCborValue::operator[](qint64 key)
这是一个重载函数。
返回一个可以用来读取或修改具有给定 key 的条目的 QCborValueRef,作为一个映射或数组。当这个 QCborValue 是一个 QCborMap 或者,对于 0 <= key < 0x10000,是一个 QCborArray 时,此函数与该映射或数组的匹配 operator[] 等效。
在返回引用之前:如果这个 QCborValue 是一个数组但索引超出范围,首先将数组转换为映射(这样码 map[i] 就等于 array[i] 对于每个索引,i,具有有效的 array[i]);否则,如果它不是一个映射,则将一个空映射覆盖它。
另请参阅 operator[],QCborMap::operator[],QCborMap::value(),QCborMap::find,QCborArray::operator[] 和 QCborArray::at。
QCborValueRef QCborValue::operator[](QLatin1StringView key)
这是一个重载函数。
返回一个可以用来读取或修改具有给定 key 的条目的 QCborValueRef,作为一个映射。当这个 QCborValue 是一个 QCborMap 时,此函数与该映射的匹配 operator[] 等效。
在返回引用之前:如果这个 QCborValue 是一个数组,则首先将其转换为映射(以便每个索引 i 的 map[i]
为 array[i]
,其中 valid array[i]
);如果不是映射,则将其覆盖为一个空映射。
另请参阅 operator[](qint64),QCborMap::operator[],QCborMap::value() 和 QCborMap::find。
QCborValueRef QCborValue::operator[](const QString &key)
返回一个可以用来读取或修改具有给定 key 的条目的 QCborValueRef,作为一个映射。当这个 QCborValue 是一个 QCborMap 时,此函数与该映射的匹配 operator[] 等效。
在返回引用之前:如果这个 QCborValue 是一个数组,则首先将其转换为映射(以便每个索引 i 的 map[i]
为 array[i]
,其中 valid array[i]
);如果不是映射,则将其覆盖为一个空映射。
另请参阅 operator[](qint64),QCborMap::operator[],QCborMap::value() 和 QCborMap::find。
© 2024 The Qt Company Ltd. 这里包含的文档贡献是该相关所有者的版权。这里提供的文档是根据由自由软件基金会发布的 GNU Free Documentation License 版本 1.3 的条款授权的。Qt 和相应的标志是芬兰和/或全球其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。