이 페이지에서

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

공개 유형

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에서 사용할 수 있는 다양한 유형 중 하나를 저장하는 데 사용할 수 있습니다. CBOR는 Concise Binary Object Representation의 약자로, JSON의 상위 집합인 매우 간결한 형태의 이진 데이터 인코딩 방식입니다. 이 방식은 IETF의 Constrained RESTful Environments(CoRE) WG에서 개발되었으며, 해당 작업 그룹은 많은 새로운 RFC에서 이를 사용해 왔습니다. 이 방식은 CoAP 프로토콜과 함께 사용하도록 설계되었습니다.

CBOR에는 세 가지 그룹의 내장 유형이 있습니다:

  • 기본 유형: 정수, 부동 소수점(double), 부울, null 등
  • 문자열 유사 유형: 문자열 및 바이트 배열
  • 컨테이너: 배열 및 맵

또한 CBOR는 더 많은 정보를 전달하기 위해 위 유형 중 하나에 “태그”를 연결함으로써 일종의 유형 확장성을 지원합니다. 예를 들어, UUID는 태그와 UUID 내용의 16바이트를 포함하는 바이트 배열로 표현됩니다. QCborValue는 Qt 클래스(예: QUuid)를 사용하여 이러한 확장된 유형 중 여러 가지를 직접 생성하고 디코딩할 수 있도록 지원합니다.

전체 목록은 QCborValue::Type 을 참조하십시오. QCborValue의 유형은 type() 또는 “isXxxx” 함수 중 하나를 사용하여 조회할 수 있습니다.

확장형 및 태그가 지정된 값

태그가 지정된 값(tagged value)은 태그 역할을 하는 숫자와 짝을 이루는 일반적인 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" 값을 포함할 수 있습니다. 이는 유일한 가능한 값이 ` nullptr`인 C++의 ` std::nullptr_t ` 유형과 유사합니다. QCborValue에는 이러한 유형을 인수로 받아 null QCborValue를 생성하는 생성자가 있습니다.

null 값은 선택적 값이 존재하지 않음을 나타내는 데 사용됩니다. 이러한 측면에서, 이는 비활성화된 상태의 C++ 표준 라이브러리 유형인 ` std::optional `와 유사합니다. C++ 유형과 달리, CBOR의 null 값은 단순히 "Null" 유형이며, 이것이 어떤 구체적인 유형을 대체하는지 파악할 수 없습니다.

QCborValue는 "undefined" 값을 나타내는 undefined 타입일 수도 있습니다. 사실, 이것이 바로 QCborValue의 기본 생성자가 생성하는 값입니다.

Undefined 값은 null 값과는 다릅니다. null은 제공되지 않은 선택적 값을 나타내는 데 사용되는 반면, Undefined는 대개 오류나 충족되지 못한 전제 조건으로 인해 예상된 값을 제공할 수 없음을 나타내는 데 사용됩니다.

이러한 값은 JSON 콘텐츠나 QJsonValue 의 undefined 비트와 달리 완전히 유효하며, CBOR 스트림에 나타날 수 있습니다. 하지만 QJsonValue 의 Undefined와 마찬가지로, CBOR 컨테이너의 value() 또는 읽기 전용 연산자 []가 유효하지 않은 조회( QCborArray 의 경우 범위를 벗어난 인덱스, QCborMap 의 경우 키 미검출) 시 이 값을 반환합니다. 이러한 경우를 Undefined 값과 구별하는 것은 불가능하므로, 구별이 필요한 경우 QCborArray 의 크기를 확인하고 QCborMap 의 이터레이터 API를 사용하십시오.

단순 유형

CBOR는 Null 및 Undefined와 마찬가지로 다른 값을 가지지 않는 추가적인 단순 유형을 지원합니다. 이들은 "단순 유형(Simple Types)"과 "단순 값(Simple Values)"이라는 용어로 혼용되어 사용됩니다. CBOR는 부울 값을 두 가지 별개의 유형( true 용 하나, false 용 하나)으로 인코딩하지만, QCborValue는 이를 위한 편의 API를 제공합니다.

현재 정의된 다른 CBOR 단순 유형은 없습니다. QCborValue는 Qt API가 업데이트되기 전까지 향후 사양과의 호환성을 위해 isSimpleType() 및 toSimpleType()과 같은 API를 통해 단순히 번호만으로 이를 지원합니다. 다른 CBOR 구현체에서 이를 완전히 지원하지 않을 수 있으므로, 해당 사양이 확정되기 전에는 사용을 권장하지 않습니다.

CBOR 지원

QCborValue는 정규(canonical) 및 엄격(strict) 스트림을 생성하는 데 필요한 모든 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()를 사용할 때는 항상 청크로 나뉘지 않은 문자열을 기록합니다(어쨌든 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줄 바꿈을 사용하며, 한 줄에 하나의 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::UseFloat0x02float상수값설명(기본값) 변환을 수행하지 않습니다.
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: 유니코드 문자열("텍스트 문자열")
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: null 값에 대한 단순 유형
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를 생성하지 않지만, 구문 분석 오류의 결과로 이러한 객체가 존재할 수 있습니다.

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를 각각 나타내는 두 가지 유형의 쌍으로 표현됩니다. 이러한 이유로, 부울형 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을 반환하면 두 값은 같으며 동일한 내용을 가집니다.

각 ` QCborValue `에 배열이나 맵이 포함되어 있는 경우, 비교는 그 안에 포함된 요소들에 대해 재귀적으로 수행됩니다.

확장된 유형

QCborValue 는 Url 및 Url 와 같은 확장형(extended type)을 포함하는 QCborValue 과 그에 상응하는 태그가 지정된 표현을 비교하여 동일성을 판단합니다. 따라서, 예를 들어 다음 표현식은 참입니다:

QCborValue(QUrl("https://example.com")) == QCborValue(QCborKnownTags::Url, "https://example.com");

QUrl 및 QDateTime 과 같은 Qt 유형은 인수를 정규화하거나 다른 방식으로 수정한다는 점에 유의하십시오. 위의 표현식이 참인 이유는 오른쪽의 문자열이 왼쪽의 QCborValue 가 취할 정규화된 값이기 때문입니다. 예를 들어, 양쪽 모두에서 "https" 부분이 대문자로 되어 있다면 비교는 실패할 것입니다. QCborValue 가 수행하는 정규화에 대한 자세한 내용은 해당 Qt 유형을 인수로 받는 생성자의 문서를 참조하십시오.

정렬 순서

CBOR의 정렬 순서는 RFC 7049의 3.9절에 정의되어 있으며, 이 절에서는 Canonical 인코딩을 따를 때 맵 내 키의 정렬에 대해 설명합니다. 사양에 따르면, “정렬은 키 데이터 항목의 표현에 포함된 바이트를 기준으로 수행된다”고 명시되어 있으며, 그 결과로 다음과 같이 나열합니다:

  • "두 키의 길이가 다르면, 더 짧은 키가 먼저 정렬됩니다."
  • "두 키의 길이가 같을 경우, (바이트 단위) 어휘 순서에서 값이 더 작은 키가 먼저 정렬됩니다."

이로 인해 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 스트림에서 항목 하나를 디코딩하고 이에 상응하는 표현을 반환합니다. 이 함수는 재귀적입니다. 즉, 항목이 맵이나 배열인 경우, 가장 바깥쪽 객체가 처리될 때까지 해당 맵이나 배열에 포함된 모든 항목을 디코딩합니다.

이 함수는 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 스트림에서 항목 하나를 디코딩하고, 이에 상응하는 표현을 반환합니다. 이 함수는 재귀적입니다. 즉, 항목이 맵이나 배열인 경우, 가장 바깥쪽 객체가 처리될 때까지 해당 맵이나 배열에 포함된 모든 항목을 디코딩합니다.

이 함수는 오류가 발생한 경우, 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)

data 의 len 바이트를 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, qint64정수
quint64정수, 또는 qint64의 범위 밖인 경우 Double
float의 범위 밖일 경우 Double, doubleDouble
QByteArrayByteArray
QDateTimeDateTime
QCborSimpleType단순형
QJsonArray배열, QCborArray::formJsonArray()를 사용하여 변환됨
QJsonDocument배열 또는 맵
QJsonObject맵, QCborMap::fromJsonObject()을 사용하여 변환됨
QJsonValuefromJsonValue()을 사용하여 변환됨
QRegularExpressionRegularExpression
QString문자열
QStringList배열
QVariantHash맵
QVariantList배열
QVariantMap맵
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용, 두 가지 별개의 유형으로 저장되기 때문입니다.

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 객체가 맵(map) 유형인 경우 true를 반환합니다. 맵 값은 toMap()을 사용하여 가져올 수 있습니다.

type() 및 toMap()도 참조하십시오 .

bool QCborValue::isNull() const

이 QCborValue 가 null 유형인 경우 true를 반환합니다.

CBOR null 값은 제공되지 않은 선택적 값을 나타내는 데 사용됩니다. null 값은 일반적으로 이전의 오류나 문제의 결과가 아니라는 점에서 undefined 값과는 구별됩니다.

null 값은 undefined 값이나 유효하지 않은 QCborValue 객체와 구별됩니다. API는 유효하지 않은 QCborValues를 생성하지 않지만, 구문 분석 오류의 결과로 이러한 값이 존재할 수 있습니다.

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()`가 ` st`를 반환하는 경우 `true`를 반환하며, 그렇지 않으면 `false`를 반환합니다. 이 함수는 API에 열거형이 없는 CBOR 단순 유형을 포함하여 모든 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용, 두 가지 별개의 유형으로 저장되기 때문입니다.

type(), isBool(), isFalse(), toBool()도 참조하십시오 .

bool QCborValue::isUndefined() const

이 QCborValue 가 ‘undefined’ 유형인 경우 true를 반환합니다.

CBOR의 'undefined' 값은 정보가 누락되었음을 나타내는 데 사용되며, 이는 대개 이전 작업이 예상대로 완료되지 않은 결과로 발생합니다. 또한 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

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 객체를 opt 에 지정된 옵션을 사용하여 CBOR 표현으로 인코딩하고, writer 로 지정된 라이터로 출력합니다. 동일한 라이터를 여러 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 가 배열이었으나 key가 범위를 벗어난 경우, 배열은 먼저 맵으로 변환됩니다(즉, 각 인덱스에 대해 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 와 일치하는 값을 가진 요소를 검색합니다. 맵(map) 내에 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.