このページでは

QCborValue Class

QCborValue クラスは、CBOR 形式の値をカプセル化します。詳細...

ヘッダー: #include <QCborValue>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

注:このクラスのすべての関数は再入可能です。

QCborValue の比較

カテゴリ比較可能な型
strongQCborValueの比較カテゴリ比較可能な型strongQCborValue

パブリック型

enum DiagnosticNotationOption { Compact, LineWrapped, ExtendedFormat }
flags DiagnosticNotationOptions
enum EncodingOption { NoTransformation, UseFloat, UseFloat16, UseIntegers }
flags EncodingOptions
enum Type { Integer, ByteArray, String, Array, Map, …, Uuid }

パブリック関数

QCborValue()
QCborValue(QCborArray &&a)
QCborValue(QCborMap &&m)
QCborValue(QCborSimpleType st)
QCborValue(QCborValue::Type t_)
QCborValue(QStringView s)
QCborValue(bool b)
QCborValue(const QByteArray &ba)
QCborValue(const QCborArray &a)
QCborValue(const QCborMap &m)
QCborValue(const QDateTime &dt)
QCborValue(const QRegularExpression &rx)
QCborValue(const QString &s)
QCborValue(const QUrl &url)
QCborValue(const QUuid &uuid)
QCborValue(const void *)
QCborValue(double d)
QCborValue(qint64 i)
QCborValue(std::nullptr_t)
QCborValue(QCborKnownTags tag, const QCborValue &tv = QCborValue())
QCborValue(QCborTag tag, const QCborValue &tv = QCborValue())
QCborValue(QLatin1StringView s)
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
(since 6.10) QAnyStringView toStringView(QAnyStringView defaultValue = {}) const
QUrl toUrl(const QUrl &defaultValue = {}) const
QUuid toUuid(const QUuid &defaultValue = {}) const
QVariant toVariant() const
QCborValue::Type type() const
QCborValue &operator=(const QCborValue &other)
QCborValue &operator=(QCborValue &&other)
QCborValueRef operator[](const QString &key)
const QCborValue operator[](const QString &key) const
QCborValueRef operator[](QLatin1StringView key)
QCborValueRef operator[](qint64 key)
const QCborValue operator[](QLatin1StringView key) const
const QCborValue operator[](qint64 key) const

静的パブリックメンバー

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)
bool operator!=(const QCborValue &lhs, const QCborValue &rhs)
bool operator<(const QCborValue &lhs, const QCborValue &rhs)
bool operator<=(const QCborValue &lhs, const QCborValue &rhs)
bool operator==(const QCborValue &lhs, const QCborValue &rhs)
bool operator>(const QCborValue &lhs, const QCborValue &rhs)
bool operator>=(const QCborValue &lhs, const QCborValue &rhs)

詳細な説明

このクラスは、CBORで利用可能な多数の型のうち1つを保持するために使用できます。 CBOR(Concise Binary Object Representation)は、JSONのスーパーセットである、非常にコンパクトな形式のバイナリデータエンコーディングです。これは、IETFのConstrained RESTful Environments(CoRE)ワーキンググループによって作成され、多くの新しいRFCで採用されています。CoAPプロトコルと併用することを想定しています。

CBORには、3つの組み込み型のグループがあります:

  • 基本型:整数、浮動小数点数(double)、ブール値、null など
  • 文字列のような型:文字列およびバイト配列
  • コンテナ:配列およびマップ

さらに、CBORは、上記の型のいずれかに「タグ」を関連付けることで、より多くの情報を伝達する形式の型拡張性をサポートしています。例えば、UUIDは、タグと、UUIDの内容である16バイトを含むバイト配列によって表現されます。 QCborValueは、Qtクラス(QUuid など)を使用して、これらの拡張型のいくつかを直接作成およびデコードすることをサポートしています。

完全なリストについては、QCborValue::Type を参照してください。QCborValue の型は、type() または「isXxxx」関数のいずれかを使用して照会できます。

拡張型とタグ付き値

タグ付き値とは、タグとなる数値とペアになった通常の QCborValue のことです。API にどのようなタグが存在するか、および公式の完全なリストについては、QCborKnownTags を参照してください。このような組み合わせが拡張型を形成します。

QCborValueは、API内で特定の拡張型(QUrl によるURLやQUuid によるUUIDなど)をサポートしています。APIでサポートされていないその他の拡張型は、Tag 型のQCborValueによって表現されます。タグは後でtag() によって取得でき、タグ付き値はtaggedValue() を使用して取得できます。

将来の互換性を確保するため、拡張Qt型を含むQCborValueは、同じ内容を持つタグ型と等価とみなされます。つまり、次の式は真となります:

QCborValue(uuid) == QCborValue(QCborKnownTags::Uuid, uuid.toRfc4122());

未定義値およびnull値

QCborValueは、特定の型を持たない「null」値を含むことができます。これは、唯一の取り得る値がnullptr であるC++のstd::nullptr_t 型に似ています。QCborValueには、この型を受け取るコンストラクタがあり、nullのQCborValueを作成します。

null値は、オプションの値が存在しないことを示すために使用されます。その点では、C++標準ライブラリの型std::optional が解除された状態と似ています。C++の型とは異なり、CBORのnullは単に「Null」型であり、それがどの具体的な型を置き換えているかを特定することはできません。

QCborValueは、「undefined」という値を表す「undefined」型になることもあります。実際、QCborValueのデフォルトコンストラクタはこれを生成します。

未定義の値は、null値とは異なります。nullは提供されていないオプションの値を示すために使用されるのに対し、未定義は通常、エラーや満たされなかった前提条件などにより、期待される値が提供できなかったことを示すために使用されます。

このような値は完全に有効であり、JSONコンテンツやQJsonValue のundefinedビットとは異なり、CBORストリーム内に現れることがあります。しかし、QJsonValue のUndefinedと同様に、無効な検索(QCborArray の場合、インデックスが範囲外、QCborMap の場合、キーが見つからない)に対して、CBORコンテナのvalue()または読み取り専用のoperator[]によって返されます。 このようなケースを `Undefined` の値と区別することはできないため、区別が必要な場合は、QCborArray のサイズを確認し、QCborMap のイテレータAPIを使用してください。

単純型

CBORは、NullやUndefinedと同様に、他の値を一切持たない追加の単純型をサポートしています。これらは「単純型」と「単純値」という名称が混用されています。CBORはブール値を2つの異なる型(true 用とfalse 用)としてエンコードしますが、QCborValueにはこれらを扱うための便利なAPIが用意されています。

現在、他に定義されているCBOR単純型はありません。QCborValueは、Qt APIが更新されるまでの間、将来の仕様との互換性を確保するために、isSimpleType()やtoSimpleType()といった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()はチャンク化された文字列をデコードできますが、チャンクを常に1つのQCborValueに統合します。そのため、toCbor()を使用する場合、常にチャンク化されていない文字列を出力します(これはCanonical形式では必須です)。

QCborValueは、CBORストリーム内の半精度および単精度浮動小数点値を常に倍精度に変換します。toCbor()関数には、それらを再構築するよう指定するパラメータを渡すことができます。

QCborValueRef

QCborValueRefは、QCborArray およびQCborMap のヘルパークラスです。これは、これらのクラスに含まれる変更可能なAPIのいずれかを使用する際に得られる型です。QCborValueとは異なり、このクラスには新しい値を割り当てることができます。値が割り当てられると、そのクラスが参照する配列またはマップは新しい値で更新されます。 その他の点においては、そのAPIはQCborValueと同一です。

関連項目: QCborArray 、QCborMap 、QCborStreamReader 、QCborStreamWriter 、QJsonValue 、QJsonDocument 、シリアライゼーションコンバータ、およびCBORデータの解析と表示。

メンバ型のドキュメント

enum QCborValue::DiagnosticNotationOption
flags QCborValue::DiagnosticNotationOptions

この列挙型は、toDiagnosticNotation() の option 引数で使用され、出力形式を変更するために用いられます。

定数定数定数値
QCborValue::Compact0x00改行を一切使用せず、コンパクトな表現を生成します。
QCborValue::LineWrapped0x01改行を使用し、1 行につき 1 つのQCborValue を生成します。
QCborValue::ExtendedFormat0x02RFC 7049には記載されていない、値を表現するためのいくつかの異なるオプションを使用します。これらのオプションは変更される可能性があります。

現在、ExtendedFormat を指定すると、バイト配列の表現方法が変更されます。これを指定しない場合、バイト配列は常にスペースを含まない 16 進数でエンコードされます。これを指定すると、QCborValue::toCbor() は、文脈に応じて、スペースを含む 16 進数、base64、または base64url エンコーディングのいずれかを使用します。

DiagnosticNotationOptions 型は、QFlags<DiagnosticNotationOption> の typedef です。これは、DiagnosticNotationOption 値の論理和(OR)の組み合わせを格納します。

toDiagnosticNotation()も参照してください 。

enum QCborValue::EncodingOption
flags QCborValue::EncodingOptions

この列挙型は、toCbor() の options 引数で使用され、エンコーダの動作を変更します。

定数定数名説明
QCborValue::NoTransformation0(デフォルト) 変換を行いません。
QCborValue::UseFloat0x02可能な限り IEEE 754 単精度浮動小数点 (つまり、float) を使用するようエンコーダに指示します。
QCborValue::UseFloat16UseFloat | 0x04可能な限り、IEEE 754 半精度浮動小数点(つまり、qfloat16 )を使用するようエンコーダに指示します。UseFloat を意味します。
QCborValue::UseIntegers0x08Double 型の値に整数が含まれる場合は、エンコーダに整数を使用するよう指示します。

UseFloat16 の使用は、ストリームを標準形式(Canonical Format)でエンコードするために必要ですが、それ以外の場合は必須ではありません。

EncodingOptions 型は、QFlags<EncodingOption> の typedef です。これは、EncodingOption 値の OR 組み合わせを格納します。

toCbor()も参照してください 。

enum QCborValue::Type

この列挙型は、QCborValue 型を表します。これは、type()関数によって返されます。

CBORの組み込み型は以下の通りです。

定数値説明
QCborValue::Integer0x00qint64: 整数値
QCborValue::ByteArray0x40QByteArray: バイト配列(「バイト文字列」)
QCborValue::String0x60QString: Unicode文字列(「テキスト文字列」)
QCborValue::Array0x80QCborArray: QCborValuesの配列
QCborValue::Map0xa0QCborMap: QCborValuesの連想コンテナ
QCborValue::SimpleType0x100QCborSimpleType: いくつかの単純型/値のいずれか
QCborValue::FalseSimpleType + int(QCborSimpleType::False)bool: 値の単純型false
QCborValue::TrueSimpleType + int(QCborSimpleType::True)bool: 値の単純型true
QCborValue::NullSimpleType + int(QCborSimpleType::Null)std::nullptr_t: ヌル値の単純型
QCborValue::UndefinedSimpleType + int(QCborSimpleType::Undefined)(型なし) 未定義値を表す単純型
QCborValue::Double0x202double: 倍精度浮動小数点
QCborValue::Invalid-1有効な値ではありません。これは通常、CBORのデコードエラーを示しています

さらに、QCborValue は拡張型を表現できます:

定数値説明
QCborValue::Tag0xc0未知または認識されない拡張型。そのタグ(QCborTag )とタグ付き値(QCborValue )によって表されます。
QCborValue::DateTime0x10000QDateTime: 日付およびタイムスタンプ
QCborValue::Url0x10020QUrl: URL または URI
QCborValue::RegularExpression0x10023QRegularExpression: 正規表現のパターン
QCborValue::Uuid0x10025QUuid: UUID

type()も参照してください 。

メンバ関数のドキュメント

QCborValue::QCborValue()

Undefined 型のQCborValueを作成します。

CBORの未定義値は、通常、前の操作が期待通りに完了しなかった結果として生じる情報の欠落を示すために使用されます。また、QCborArray およびQCborMap APIでは、検索対象が見つからなかったことを示すためにも使用されます。

未定義値は `Undefined simple type` で表されます。そのため、未定義値を持つ `QCborValue` は、`isSimpleType()` および `isSimpleType(QCborSimpleType::Undefined)` に対しても `true` を返します。

未定義の値は、null値とは異なります。

未定義の値を持つQCborValueオブジェクトは、無効なQCborValueオブジェクトとも異なります。APIは無効なQCborValueを作成することはありませんが、構文解析エラーの結果として無効なQCborValueが存在する可能性があります。

isUndefined()、isNull()、およびisSimpleType()も参照してください 。

QCborValue::QCborValue(QCborArray &&a)

QCborValue::QCborValue(const QCborArray &a)

配列 `a` を使用して `QCborValue ` を作成します。この配列は、後で `toArray()` を使用して取得できます。

toArray()、isArray()、およびisMap()も参照してください 。

QCborValue::QCborValue(QCborMap &&m)

QCborValue::QCborValue(const QCborMap &m)

マップm を持つQCborValue を作成します。このマップは、後でtoMap() を使用して取得できます。

toMap()、isMap()、およびisArray()も参照してください 。

QCborValue::QCborValue(QCborSimpleType st)

単純型st のQCborValueを作成します。この型は、後でtoSimpleType()およびisSimpleType(st)を使用して取得できます。

CBORの単純型とは、C++のstd::nullptr_t 型のように、関連付けられた値を持たない型のことであり、その唯一の可能な値はnullptr です。

st がQCborSimpleType::Null の場合、結果として得られるQCborValueはNull 型となり、QCborSimpleType::Undefined の場合も同様です。st がQCborSimpleType::False またはQCborSimpleType::True の場合、作成されるQCborValueは、それぞれfalseまたはtrueの値を含むブール値となります。

この関数は、APIで定義されていない単純型でも使用できます。たとえば、単純型12のQCborValueを作成するには、次のように記述します。

単純型については、その仕様が公開されるまでは使用しないでください。他の実装では適切にサポートされていない可能性があるためです。単純型の値 24 から 31 までは予約済みであり、使用してはなりません。

isSimpleType(),isNull(),isUndefined(),isTrue(),isFalse()

QCborValue::QCborValue(QCborValue::Type t_)

t_ 型のQCborValueを作成します。この型に関連付けられた値(存在する場合)は、デフォルトコンストラクタによって生成されます。

type()も参照してください 。

QCborValue::QCborValue(QStringView s)

文字列値「s 」を持つQCborValueを作成します。この値は、後でtoString() を使用して取得できます。

toString()、isString()、およびisByteArray()も参照してください 。

QCborValue::QCborValue(bool b)

ブール値b を持つQCborValueを作成します。この値は、後でtoBool()を使用して取得できます。

内部的には、CBORのブール値は、true用とfalse用の2つの型で表現されます。そのため、ブール型のQCborValueは、isSimpleType()に対してはtrueを返し、isSimpleType(QCborSimpleType::False) またはisSimpleType(QCborSimpleType::True) のいずれかを返します。

toBool()、isBool()、isTrue()、isFalse()、およびisSimpleType()も参照してください 。

QCborValue::QCborValue(const QByteArray &ba)

バイト配列の値 `ba` を持つ `QCborValue` を作成します。この値は、後で `toByteArray()` を使用して取得できます。

toByteArray()、isByteArray()、およびisString()も参照してください 。

[explicit] QCborValue::QCborValue(const QDateTime &dt)

dt で表される値を含む、日付/時刻の拡張型である QCborValue オブジェクトを作成します。この値は、後でtoDateTime() を使用して取得できます。

CBORの日時型は、タグを使用した拡張型です。具体的には、DateTime としてタグ付けされた文字列(ISO日付形式)か、UnixTime_t としてタグ付けされた数値(1970年1月1日00:00:00 UTCからの経過秒数)のいずれかです。CBORストリームを解析する際、QCborValueはUnixTime_t を文字列ベースの型に変換します。

toDateTime()、isDateTime()、およびtaggedValue()も参照してください 。

[explicit] QCborValue::QCborValue(const QRegularExpression &rx)

正規表現パターン拡張型であるQCborValueオブジェクトを作成し、rx で表される値を格納します。この値は、後でtoRegularExpression() を使用して取得できます。

CBOR正規表現型は、RegularExpression としてタグ付けされた文字列によって表される拡張型です。CBOR正規表現はパターンのみを格納するため、QRegularExpression オブジェクトが持つ可能性のあるフラグはすべて失われることに注意してください。

toRegularExpression()、isRegularExpression()、およびtaggedValue()も参照してください 。

QCborValue::QCborValue(const QString &s)

文字列値「s 」を持つQCborValueを作成します。この値は、後でtoString() を使用して取得できます。

toString()、isString()、およびisByteArray()も参照してください 。

[explicit] QCborValue::QCborValue(const QUrl &url)

URL拡張型であり、url で表される値を含む QCborValue オブジェクトを作成します。この値は、後でtoUrl() を使用して取得できます。

CBOR URL 型は、Url としてタグ付けされた文字列によって表される拡張型です。

toUrl()、isUrl()、およびtaggedValue()も参照してください 。

[explicit] QCborValue::QCborValue(const QUuid &uuid)

UUID拡張型であり、uuid で表される値を含む QCborValue オブジェクトを作成します。この値は、後でtoUuid() を使用して取得できます。

CBOR UUID 型は、Uuid としてタグ付けされたバイト配列によって表される拡張型です。

toUuid()、isUuid()、およびtaggedValue()も参照してください 。

[delete] QCborValue::QCborValue(const void *)

QCborValue のインスタンスをデフォルトで生成します。この関数は削除されました。

QCborValue::QCborValue(double d)

浮動小数点値 `d` を持つ `QCborValue` オブジェクトを作成します。この値は、後で `toDouble()` を使用して取得できます。

CBORの浮動小数点値は整数値とは区別されます。したがって、オブジェクトに含まれる値が等価であっても、整数を格納するQCborValueオブジェクトと浮動小数点値を含むQCborValueオブジェクトでは、比較結果が異なります。

toDouble()、isDouble()、およびisInteger()も参照してください 。

QCborValue::QCborValue(qint64 i)

整数値i を持つQCborValueを作成します。この値は、後でtoInteger()を使用して取得できます。

CBORの整数値は浮動小数点値とは異なります。したがって、オブジェクトに含まれる値が等価であっても、整数を格納するQCborValueオブジェクトと浮動小数点数を格納するQCborValueオブジェクトでは、比較結果が異なります。

toInteger()、isInteger()、およびisDouble()も参照してください 。

QCborValue::QCborValue(std::nullptr_t)

Null 型のQCborValueを作成します。

CBORのnull値は、指定されなかったオプションの値を示すために使用されます。null値は、通常、それ以前のエラーや問題の結果ではないという点で、未定義の値とは区別されます。

isNull()、isUndefined()、およびisSimpleType()も参照してください 。

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も参照してください 。

QCborValue::QCborValue(QLatin1StringView s)

s によって解析されたLatin-1文字列を含むQCborValueを作成します。この値は、後でtoString()を使用して取得できます。

これはオーバーロードされた関数です。

toString()、isString()、およびisByteArray()も参照してください 。

[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を返した場合、2つの値は等しく、同じ内容を持っています。

各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で定義されており、ここではカノニカルエンコーディングに従ったマップ内のキーのソートについて論じられています。仕様によると、「ソートはキーデータ項目の表現のバイトに対して行われる」とされており、その結果として次のように挙げられています:

  • 「2つのキーの長さが異なる場合、短い方が先にソートされる」
  • 「2つのキーの長さが同じ場合、(バイト単位の)辞書順で値が小さい方が先にソートされる。」

これにより、QCborValuesのソート順序に予期せぬ結果が生じ、この関数の結果は、後に含まれる要素を比較して取得される結果とは異なるものとなります。 例えば、文字列「zzz」を含むQCborValue は、文字列「foobar」を含むQCborValue よりも先にソートされます。一方、QStrings やQByteArrays として比較した場合、「zzz」は「foobar」の後にソートされます(辞書順)。

仕様書では、異なる型の値に対してどのようなソート順序を採用すべきかについて明確に示されていません(「主要な型における3/5ビットの分割には注意を払わない」と記載されています)。QCborValue は、型についてもソートされるべきであるという前提に基づいています。QCborValue::Type 列挙型の数値は、その順序で並んでいます。ただし、拡張型については例外であり、これらはタグ付き型と同等の比較が行われます。

注:ソート順は 暫定的なものであり、変更される可能性があります。当面の間、アプリケーションはこの関数が返す順序に依存すべきではありません。

関連項目: QCborArray::compare()、QCborMap::compare()、およびoperator==()。

[static] QCborValue QCborValue::fromCbor(QCborStreamReader &reader)

reader 内の CBOR ストリームから 1 つの項目をデコードし、それに対応する表現を返します。この関数は再帰的です。つまり、項目がマップまたは配列である場合、最外層のオブジェクトが処理されるまで、そのマップまたは配列に含まれるすべての項目をデコードします。

この関数は、QCborStreamReader のルート要素に対して必ずしも使用する必要はありません。例えば、以下のコードは、ファイルの先頭にある CBOR 署名タグをスキップする方法を示しています:

if (reader.isTag() && reader.toTag() == QCborKnownTags::Signature)
    reader.next();

QCborValue contents = QCborValue::fromCbor(reader);

デコードに失敗した場合でも、戻り値は部分的に完了した状態であり、有効なQCborValue と見分けがつかない場合があります。エラーが発生したかどうかを確認するには、reader.lastError()がエラー状態を示しているかどうかを確認してください。この関数は、最初のエラーが発生した直後にデコードを停止します。

toCbor()、toDiagnosticNotation()、toVariant()、およびtoJsonValue()も参照してください 。

[static] QCborValue QCborValue::fromCbor(const QByteArray &ba, QCborParserError *error = nullptr)

バイト配列 `ba ` に含まれる CBOR ストリームから 1 つの項目をデコードし、それに対応する表現を返します。この関数は再帰的です。つまり、項目がマップまたは配列である場合、最外層のオブジェクトが処理されるまで、そのマップまたは配列に含まれるすべての項目をデコードします。

この関数は、エラーが発生した場合は、そのエラー状態とエラーが発生した位置のオフセットを、error が指すオブジェクトに格納します。エラーが発生しなかった場合は、エラー状態に `NoError ` を格納し、消費したバイト数を格納します(つまり、最初に未使用のバイトのオフセットを格納します)。 この情報を使用することで、同じバイト配列内に存在する可能性のあるさらなるデータを解析することが可能になります。

デコードに失敗した場合でも、戻り値は部分的に完了しており、有効なQCborValue と見分けがつかない場合があります。エラーが発生したかどうかを確認するには、error にエラーが格納されているかどうかを確認してください。この関数は、最初のエラーが発生した直後にデコードを停止します。

これはオーバーロードされた関数です。

toCbor()、toDiagnosticNotation()、toVariant()、およびtoJsonValue()も参照してください 。

[static] QCborValue QCborValue::fromCbor(const char *data, qsizetype len, QCborParserError *error = nullptr)

[static] QCborValue QCborValue::fromCbor(const quint8 *data, qsizetype len, QCborParserError *error = nullptr)

len バイトのdata をQByteArray に変換し、その後、QByteArray を受け取るこの関数のオーバーロードを呼び出し、指定されている場合はerror も渡します。

[static] QCborValue QCborValue::fromJsonValue(const QJsonValue &v)

v に含まれるJSON値を、対応するCBOR値に変換して返します。CBORの型セットはJSONよりも豊富であるため、JSONからCBORへの変換においてデータの損失は発生しません。さらに、この関数を使用してCBORに変換された値は、toJsonValue() を使用することで、データの損失なくJSONに戻すことができます。

次の表に、JSON型とCBOR型の対応関係を示します:

JSON型CBOR 型
BoolBool
Number整数(数値に小数部がなく、qint64 の範囲内である場合)またはDouble
文字列文字列
配列配列
オブジェクトマップ
NullNull

QJsonValue は未定義の場合もあり、これは前の操作が正常に完了しなかったことを示します(たとえば、オブジェクトに存在しないキーを検索した場合など)。未定義の値は JSON 型ではなく、JSON の配列やオブジェクトには出現しませんが、この関数は、対応するQJsonValue が未定義の場合、QCborValue の未定義値を返します。

toJsonValue()、fromVariant()、QCborArray::fromJsonArray()、およびQCborMap::fromJsonObject()も参照してください 。

[static] QCborValue QCborValue::fromVariant(const QVariant &variant)

QVariant variant をQCborValue に変換し、それを返します。

QVariantには、多種多様なメタ型のリストが含まれている場合がありますが、その多くはCBORに対応する表現を持ちません。これには、すべてのユーザー定義メタ型が含まれます。CBORを使用した送信を準備する際は、表現の損失を防ぐために、各値を慎重にエンコードすることをお勧めします。

以下の表に、この関数が適用する変換を一覧で示します:

Qt (C++) 型CBOR 型
無効 (QVariant())未定義
boolBool
std::nullptr_tNull
short、ushort 、int 、uint 、qint64Integer
quint64整数、または qint64 の範囲外の場合は Double
floatの範囲外の場合はDouble)、doubleDouble
QByteArrayByteArray
QDateTimeDateTime
QCborSimpleType単純型
QJsonArray配列。QCborArray::formJsonArray() を使用して変換
QJsonDocument配列またはマップ
QJsonObjectMap、QCborMap::fromJsonObject() を使用して変換済み
QJsonValuefromJsonValue() を使用して変換されたもの
QRegularExpressionRegularExpression
QString文字列
QStringList配列
QVariantHashMap
QVariantList配列
QVariantMapMap
QUrlURL
QUuidUUID

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() を使用して取得できます。

type() および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

この便利関数は、QCborValue が配列またはマップのいずれかである場合にtrueを返します。

isArray() およびisMap()も参照してください 。

bool QCborValue::isDateTime() const

このQCborValue が日付/時刻型である場合、trueを返します。値はtoDateTime()を使用して取得できます。日付/時刻は、タグDateTime を使用する拡張型です。

さらに、CBORストリームからデコードする際、QCborValue は値がUnixTime_t であるタグを解釈し、それらを同等の日付/時刻に変換します。

type() およびtoDateTime()も参照してください 。

bool QCborValue::isDouble() const

このQCborValue が浮動小数点型である場合にtrueを返します。この値はtoDouble()を使用して取得できます。

type() およびtoDouble()も参照してください 。

bool QCborValue::isFalse() const

このQCborValue がfalse値を持つブール値である場合、trueを返します。この関数が存在する理由は、内部的にCBORのブール値が、true用とfalse用の2つの別々の型として格納されているためです。

type()、isBool()、isTrue()、およびtoBool()も参照してください 。

bool QCborValue::isInteger() const

このQCborValue が整数型である場合、trueを返します。整数値は、toInteger() を使用して取得できます。

type() およびtoInteger()も参照してください 。

bool QCborValue::isInvalid() const

このQCborValue が有効な型でない場合、trueを返します。無効なQCborValuesは、値が未定義のものとは区別され、通常はデコードエラーを表します。

isUndefined() およびisNull()も参照してください 。

bool QCborValue::isMap() const

このQCborValue がマップ型である場合、trueを返します。マップの値は、toMap() を使用して取得できます。

type() およびtoMap()も参照してください 。

bool QCborValue::isNull() const

このQCborValue がnull型である場合、trueを返します。

CBORのnull値は、指定されなかったオプションの値を示すために使用されます。null値は、通常、それ以前のエラーや問題の結果ではないという点で、undefined値とは異なります。

null値は、未定義の値や無効なQCborValue オブジェクトとは区別されます。APIは無効なQCborValuesを作成することはありませんが、構文解析エラーの結果として無効なQCborValuesが存在する可能性があります。

type()、isUndefined()、およびisInvalid()も参照してください 。

bool QCborValue::isRegularExpression() const

このQCborValue に正規表現のパターンが含まれている場合、trueを返します。このパターンは、toRegularExpression() を使用して取得できます。

type() およびtoRegularExpression()も参照してください 。

bool QCborValue::isSimpleType() const

このQCborValue がCBORの単純型のいずれかに該当する場合、trueを返します。この型自体は、APIに列挙型がない場合でも、後でtype() を使用して取得できます。また、isSimpleType (QCborSimpleType)のオーバーロードを使用して確認することもできます。

QCborSimpleType 、isSimpleType(QCborSimpleType)、およびtoSimpleType()も参照してください 。

bool QCborValue::isSimpleType(QCborSimpleType st) const

このQCborValue が単純型であり、toSimpleType()がst を返す場合、trueを返します。それ以外の場合はfalseを返します。この関数は、APIに列挙型が存在しないものも含め、あらゆるCBOR単純型のチェックに使用できます。例えば、値が12の単純型については、次のように記述できます。

value.isSimpleType(QCborSimpleType(12));

これはオーバーロードされた関数です。

関連項目: QCborValue::QCborValue (QCborSimpleType)、isSimpleType()、isFalse()、isTrue()、isNull 、isUndefined()、およびtoSimpleType()。

bool QCborValue::isString() const

このQCborValue が文字列型である場合、trueを返します。文字列の値は、toString() を使用して取得できます。

type() およびtoString()も参照してください 。

bool QCborValue::isTag() const

このQCborValue がタグ型である場合、trueを返します。タグ値はtag()を使用して取得でき、タグ付き値はtaggedValue()を使用して取得できます。

この関数は、API が認識する拡張型に対しても true を返します。Qt API が拡張型をサポートするように更新される前に、拡張型を直接処理するコードについては、taggedValue() を使用してタグとタグ付き値のペアを再作成することが可能です。

type()、tag()、およびtaggedValue()も参照してください 。

bool QCborValue::isTrue() const

このQCborValue がtrueの値を持つブール値である場合にtrueを返します。この関数が存在する理由は、内部的にCBORのブール値が、false用とtrue用の2つの別々の型として格納されているためです。

type()、isBool()、isFalse()、およびtoBool()も参照してください 。

bool QCborValue::isUndefined() const

このQCborValue が「未定義」タイプである場合、trueを返します。

CBORの未定義値は、通常、期待どおりに完了しなかった前の操作の結果として生じる情報の欠落を示すために使用されます。また、QCborArray およびQCborMap APIでは、検索対象が見つからなかったことを示すためにも使用されます。

未定義値は、null 値とは異なります。

QCborValue 未定義値を持つオブジェクトは、無効なQCborValue オブジェクトとも異なります。APIは無効な QCborValues を作成することはありませんが、構文解析エラーの結果としてそれらが存在する場合があります。

type()、isNull()、およびisInvalid()も参照してください 。

bool QCborValue::isUrl() const

このQCborValue がURL型である場合、trueを返します。URLの値は、toUrl() を使用して取得できます。

type() およびtoUrl()も参照してください 。

bool QCborValue::isUuid() const

このQCborValue にUUIDが含まれている場合、trueを返します。値はtoUuid()を使用して取得できます。

type() およびtoUuid()も参照してください 。

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

この値を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()。

QCborArray QCborValue::toArray() const

QCborArray QCborValue::toArray(const QCborArray &defaultValue) const

このQCborValue に格納されている値が配列型である場合、その配列値を返します。そうでない場合は、defaultValue を返します。

なお、この関数は他の型からQCborArray への変換は行わないことに注意してください。

isArray()、isByteArray()、isMap()、isContainer()、およびtoMap()も参照してください 。

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

この `QCborValue ` オブジェクトを、opt で指定されたオプションを使用して 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 オブジェクトを、opt で指定されたオプションを使用して、writer で指定されたライターに対して CBOR 表現にエンコードします。同じライターを複数の QCborValues で共有して使用することも可能です。例えば、より大きな配列内の異なる要素をエンコードする場合などが挙げられます。

この関数は、QCborValue 自体、または(これがマップや配列である場合)その中に含まれる項目のいずれかが無効である場合を除き、失敗することはありません。無効な型は通常、APIによって生成されるものではありませんが、デコードエラーの結果として生じる可能性があります。

デフォルトでは、この関数はQCborValue 内の値に対して変換を行わず、すべての浮動小数点数を直接倍精度(binary64)型として書き込みます。UseFloat オプションが指定された場合、その表現を使用しても精度の損失がない浮動小数点値については、単精度(binary32)が使用されます。 これには、無限大やNaN値も含まれます。

同様に、UseFloat16 が指定されている場合、この関数は、変換によって精度の損失が生じない限り、半精度(binary16)浮動小数点数の使用を試みます。これは、無限大および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型である場合に返します。Integer型である場合は、この関数はdouble型に変換された整数値を返します。それ以外の場合は、defaultValue を返します。

関連項目: isDouble()、isInteger()、およびtoInteger()。

qint64 QCborValue::toInteger(qint64 defaultValue = 0) const

このQCborValue に格納されている整数値を返します(整数型の場合)。Double型の場合は、浮動小数点値を整数に変換した値を返します。それ以外の場合は、defaultValue を返します。

関連項目: isInteger()、isDouble()、およびtoDouble()。

QJsonValue QCborValue::toJsonValue() const

このQCborValue オブジェクトをJSON形式の同等の表現に変換し、QJsonValue として返します。

CBORはJSONよりも豊富で幅広い型セットを含むため、この変換において一部の情報が失われる可能性があることにご注意ください。以下の表では、CBORの型とJSONの型を比較し、情報が失われる可能性があるかどうかを示しています。

CBOR 型JSON 型備考
BoolBoolデータの損失は発生しない
DoubleNumber無限大およびNaNはNullに変換されます。その他の値についてはデータ損失はありません。
整数数値整数整数が253より大きいか、-253 より小さい場合、変換時にデータが失われる可能性があります。
NullNullデータ損失の可能性なし
未定義NullNull型情報が失われました
文字列文字列データの損失は発生しない
バイト配列文字列Base64url のようなロスレスエンコーディングに変換されますが、文字列とバイト配列の区別は失われます
その他の単純型文字列型情報が失われる
配列配列変換は、含まれる各値に適用される
マップオブジェクトキーは文字列に変換され、値はこの表に従って変換されます
タグおよび拡張型特殊タグ番号自体は失われ、タグ付けされた値は JSON に変換されます

CBOR マップのキーの文字列への変換に関する詳細については、QCborMap::toJsonObject() を参照してください。

このQCborValue に undefined 値が含まれている場合、この関数は undefined のQJsonValue も返します。 JSON は undefined 値をサポートしておらず、undefined QJsonValues は仕様の拡張であることに注意してください。これらはQJsonArray やQJsonObject には格納できませんが、失敗を示すために関数から返すことは可能です。その他のあらゆる目的において、これらは null と同じです。

タグおよび拡張型の特別な取り扱い

一部のタグは特別に処理され、タグ付けされた値のCBORからJSONへの変換を変更します。以下の表に、それらの特別なケースをまとめます:

タグCBOR 型変換
ExpectedBase64urlバイト配列バイト配列をBase64urlとしてエンコードする
ExpectedBase64バイト配列バイト配列をBase64としてエンコードする
ExpectedBase16バイト配列バイト配列を16進数でエンコードします
URLURLおよび文字列QUrl::toEncoded() を使用して、エンコーディングを URL の完全エンコード形式に正規化します
UUIDUUID とバイト配列QUuid::toString() を使用して、文字列表現を作成します

関連項目: fromJsonValue()、toVariant()、QCborArray::toJsonArray()、およびQCborMap::toJsonObject()。

QCborMap QCborValue::toMap() const

QCborMap QCborValue::toMap(const QCborMap &defaultValue) const

このQCborValue に格納されているマップ値がマップ型である場合、その値を返します。そうでない場合は、defaultValue を返します。

なお、この関数は他の型からQCborMap への変換は行いません。

isMap()、isArray()、isContainer()、およびtoArray()も参照してください 。

QRegularExpression QCborValue::toRegularExpression(const QRegularExpression &defaultValue = {}) const

このQCborValue に格納されている正規表現の値を返します(その値が「正規表現パターン拡張型」である場合)。それ以外の場合は、defaultValue を返します。

なお、この関数は他の型からQRegularExpression への変換は行わないことに注意してください。

isRegularExpression()、isTag()、およびtaggedValue()も参照してください 。

QCborSimpleType QCborValue::toSimpleType(QCborSimpleType defaultValue = QCborSimpleType::Undefined) const

QCborValue が単純型である場合、その単純型を返します。単純型でない場合は、defaultValue を返します。

以下の型は単純型であり、この関数はリストされた値を返します:

関連項目: type()、isSimpleType()、isBool()、isTrue()、isFalse()、isNull()、およびisUndefined()を参照してください 。

QString QCborValue::toString(const QString &defaultValue = {}) const

このQCborValue に格納されている文字列値が文字列型である場合、その値を返します。そうでない場合は、defaultValue を返します。

なお、この関数は他の型からQString への変換は行わないことに注意してください。

toStringView()、isString()、isByteArray()、およびtoByteArray()も参照してください 。

[since 6.10] QAnyStringView QCborValue::toStringView(QAnyStringView defaultValue = {}) const

このQCborValue に格納されている文字列値を、それが文字列型である場合に返します。そうでない場合は、defaultValue を返します。QCborValue は文字列をUS-ASCII、UTF-8、またはUTF-16のいずれかで格納するため、返されるQAnyStringView はこれらのエンコーディングのいずれかになる可能性があります。

この関数はメモリを割り当てません。戻り値は、このオブジェクトに対して非constのメンバ関数が次に呼び出されるまで有効です。このオブジェクトがスコープ外になった場合、戻り値は親CBORオブジェクト(マップまたは配列)に対して非constのメンバ関数が次に呼び出されるまで有効です。

なお、この関数は他の型からQString への変換は行いません。

この関数は Qt 6.10 で導入されました。

toString()、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 types とQt meta types の間で実行されるマッピングの一覧です。

CBOR 型Qt または C++ 型備考
整数qint64
Doubledouble
Boolbool
Nullstd::nullptr_t
未定義型なし (QVariant())
バイト配列QByteArray
文字列QString
配列QVariantListすべての値を再帰的に変換します
マップQVariantMapキーの型は「文字列化」される
その他の単純型QCborSimpleType
DateTimeQDateTime
UrlQUrl
RegularExpressionQRegularExpression
UUIDQUuid
その他のタグ特殊このタグは無視され、タグ付けされた値はこの関数を使用して変換されます

なお、CBORマップおよび配列内の値も、この関数を使用して再帰的に変換され、代わりにQVariantMap およびQVariantList に格納されることに注意してください。QVariant内部には、QCborMap およびQCborArray は格納されません。

QVariantMapsはCBORとは異なり、キーが文字列であるため、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] QCborValue &QCborValue::operator=(const QCborValue &other)

このQCborObjectの内容を、other のコピーに置き換えます。

[noexcept] QCborValue &QCborValue::operator=(QCborValue &&other)

other QCborValue オブジェクトの内容をこのオブジェクトに移し、このオブジェクトのリソースを解放します。このオブジェクトへの参照を返します。

これはオーバーロードされた関数です。

QCborValueRef QCborValue::operator[](const QString &key)

指定されたkey を用いて、このオブジェクト内のエントリ(マップとして)を読み取ったり変更したりするために使用できるQCborValueRefを返します。このQCborValue がQCborMap である場合、この関数はそのマップに対する対応する演算子[]と同等です。

参照を返す前に:このQCborValue が配列であった場合、まずマップに変換されます(これにより、各インデックスi に対して、map[i] がarray[i] となり、array[i] が有効になります)。それ以外の場合、マップでなかった場合は空のマップで上書きされます。

operator[] (qint64)、QCborMap::operator[] 、QCborMap::value()、およびQCborMap::find()も参照してください 。

const QCborValue QCborValue::operator[](const QString &key) const

このQCborValue がQCborMap である場合、キーがkey と一致する値を持つ要素を検索します。マップ内にkey と一致するキーが存在しない場合、またはこのQCborValue オブジェクトがマップでない場合は、undefined を返します。

この関数は以下と同等です:

value.toMap().value(key);

関連項目: operator[](qint64)、QCborMap::operator[] 、QCborMap::value()、およびQCborMap::find()。

QCborValueRef QCborValue::operator[](QLatin1StringView key)

指定されたkey を用いて、このオブジェクト内のエントリ(マップとして)を読み取ったり変更したりするために使用できるQCborValueRefを返します。このQCborValue がQCborMap である場合、この関数はそのマップに対する対応する演算子[]と同等です。

参照を返す前に:このQCborValue が配列であった場合、まずマップに変換されます(これにより、各インデックスi に対して、map[i] はarray[i] となり、array[i] が有効になります)。それ以外の場合、マップでなかった場合は空のマップで上書きされます。

これはオーバーロードされた関数です。

operator[] (qint64)、QCborMap::operator[] 、QCborMap::value()、およびQCborMap::find()も参照してください 。

QCborValueRef QCborValue::operator[](qint64 key)

指定されたkey を用いて、このオブジェクト内のエントリをマップまたは配列として読み取ったり変更したりするために使用できるQCborValueRefを返します。このQCborValue がQCborMap である場合、あるいは0 <= key < 0x10000の場合にQCborArray である場合、この関数は、そのマップまたは配列に対する対応する演算子[]と同等です。

参照を返す前に:このQCborValue が配列であったが、キーが範囲外である場合、配列はまずマップに変換されます(これにより、各インデックスについてmap[i] はarray[i] となり、i となり、有効なarray[i] が得られます)。それ以外の場合、マップでなかった場合は空のマップで上書きされます。

これはオーバーロードされた関数です。

operator[] 、QCborMap::operator[] 、QCborMap::value()、QCborMap::find()、QCborArray::operator[] 、およびQCborArray::at()も参照してください 。

const QCborValue QCborValue::operator[](QLatin1StringView key) const

このQCborValue がQCborMap である場合、キーがkey と一致する値を持つ要素を検索します。マップ内にkey と一致するキーが存在しない場合、またはこのQCborValue オブジェクトがマップでない場合は、undefined を返します。

この関数は、以下と同等です:

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 ` オブジェクトが配列やマップでない場合は、`undefined` を返します。

これはオーバーロードされた関数です。

operator[] 、QCborMap::operator[] 、QCborMap::value()、QCborMap::find()、QCborArray::operator[] 、およびQCborArray::at()も参照してください 。

関連する非会員

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

lhs とrhs を比較し、内容が異なる場合は true を、そうでない場合は false を返します。各QCborValue に配列またはマップが含まれている場合、比較はそれらに含まれる要素に対して再帰的に行われます。

Qt XML における CBOR の等価性に関する詳細については、QCborValue::compare() を参照してください。

また、 compare()、QCborMap::operator==()、operator==()、およびoperator<()も参照してください 。

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

lhs とrhs を比較し、lhs がrhs より先にソートされるべき場合は true を返し、そうでない場合は false を返します。各QCborValue が配列またはマップを含む場合、その中に含まれる要素に対して再帰的に比較が行われます。

CBORのソート順序に関する詳細については、QCborValue::compare() を参照してください。

compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() およびoperator!=()も参照してください 。

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

lhs とrhs を比較し、lhs がrhs より先にソートされるべきであるか、あるいはrhs と等しい場合に true を返し、それ以外の場合は false を返します。各QCborValue が配列またはマップを含む場合、比較はそれらに含まれる要素に対して再帰的に行われます。

CBORのソート順序に関する詳細については、QCborValue::compare() を参照してください。

compare()、QCborValue::operator<()、QCborMap::operator==()、operator==()、およびoperator!=()も参照してください 。

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

lhs とrhs を比較し、内容が同一の場合は true を、そうでない場合は false を返します。各QCborValue が配列またはマップを含む場合、比較はそれらに含まれる要素に対して再帰的に行われます。

Qt XML における CBOR の等価性に関する詳細については、compare() を参照してください。

compare()、QCborMap::operator==()、operator!=()、およびoperator<()も参照してください 。

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

lhs とrhs を比較し、lhs がrhs の後にソートされるべき場合は true を、そうでない場合は false を返します。各QCborValue が配列またはマップを含む場合、比較はそれらに含まれる要素に対して再帰的に行われます。

CBORのソート順序に関する詳細については、QCborValue::compare() を参照してください。

compare()、QCborValue::operator>=()、QCborMap::operator==()、operator==()、およびoperator!=()も参照してください 。

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

lhs とrhs を比較し、lhs がrhs の後にソートされるべきであるか、あるいはrhs と等しい場合に true を返し、それ以外の場合は false を返します。各QCborValue が配列またはマップを含む場合、比較はそれらに含まれる要素に対して再帰的に行われます。

CBORのソート順序に関する詳細については、QCborValue::compare() を参照してください。

compare()、QCborValue::operator>()、QCborMap::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.