QCborValue Class
QCborValue 클래스는 CBOR로 값을 캡슐화합니다. 더 보기...
헤더: | #include <QCborValue> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 상속된 멤버를 포함한 모든 멤버의 목록
- QCborValue는 Qt의 CBOR 지원의 일부입니다.
이 클래스는 매우 유사합니다.
참고: 이 클래스의 모든 함수는 재진입입니다.
공용 형
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(double d) | |
QCborValue(qint64 i) | |
QCborValue(std::nullptr_t) | |
QCborValue(QCborTag tag, const QCborValue &tv = QCborValue()) | |
QCborValue(QLatin1StringView s) | |
QCborValue(QCborKnownTags tag, const QCborValue &tv = QCborValue()) | |
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 |
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은 간결한 바이너리 객체 표현으로, JSON의 상위 집합인 매우 간결한 형태의 바이너리 데이터 인코딩입니다. 이 형식은 많은 새로운 RFC에 사용된 IETF CoRE(Constrained RESTful Environments) WG에서 만들었습니다. CoAP 프로토콜과 함께 사용하기 위한 것입니다.
CBOR에는 세 가지 기본 유형 그룹이 있습니다:
- 기본 유형: 정수, 부동 소수점(더블), 부울, 널 등.
- 문자열 유사 유형: 문자열 및 바이트 배열
- 컨테이너: 배열 및 맵
또한 CBOR은 위의 유형 중 하나에 '태그'를 연결하여 더 많은 정보를 전달하는 형식의 유형 확장성을 지원합니다. 예를 들어, UUID는 태그와 16바이트의 UUID 콘텐츠가 포함된 바이트 배열로 표현됩니다. QCborValue는 이러한 확장 유형 중 몇 가지를 Qt 클래스로 직접 생성하고 디코딩하는 것을 지원합니다(예: QUuid).
전체 목록은 QCborValue::Type 을 참조하십시오. QCborValue의 유형은 type() 또는 "isXxxx" 함수 중 하나를 사용하여 쿼리할 수 있습니다.
확장된 유형 및 태그가 지정된 값
태그가 지정된 값은 태그인 숫자와 쌍을 이루는 일반 QCborValue입니다. API에 포함된 태그에 대한 자세한 내용과 전체 공식 목록은 QCborKnownTags 을 참조하세요. 이러한 조합은 확장 유형을 형성합니다.
QCborValue는 URL( QUrl)과 UUID( QUuid)와 같은 특정 확장 유형을 API에서 지원합니다. API에서 지원되지 않는 다른 확장 유형은 Tag 유형의 QCborValue로 표시됩니다. 태그는 나중에 tag(), 태그된 값은 taggedValue()을 사용하여 검색할 수 있습니다.
향후 호환성을 지원하기 위해 확장된 Qt 유형을 포함하는 QCborValue는 동일한 내용의 태그 유형과 동일하게 비교합니다. 즉, 다음 표현식은 참입니다:
QCborValue(uuid) == QCborValue(QCborKnownTags::Uuid, uuid.toRfc4122());
정의되지 않은 값과 널 값
QCborValue는 특정 유형이 아닌 "null" 값을 포함할 수 있습니다. 이는 가능한 유일한 값이 nullptr
인 C++ std::nullptr_t
유형과 유사합니다. QCborValue에는 이러한 유형을 취하는 생성자가 있으며, 이 생성자는 null QCborValue를 생성합니다.
널 값은 선택적 값이 존재하지 않음을 나타내는 데 사용됩니다. 이러한 측면에서는 C++ 표준 라이브러리 유형 std::optional
과 유사합니다. C++ 유형과 달리 CBOR 널은 단순히 "Null" 유형이며 어떤 구체적인 유형으로 대체되는지 확인할 수 없습니다.
QCborValue는 "정의되지 않음"의 값을 나타내는 정의되지 않은 유형일 수도 있습니다. 실제로 QCborValue 기본 생성자가 생성하는 것이 바로 이 유형입니다.
정의되지 않은 값은 null 값과 다릅니다. 널은 제공되지 않은 선택적 값을 나타내는 데 사용되는 반면, 정의되지 않음은 일반적으로 오류 또는 충족할 수 없는 전제 조건으로 인해 예상 값을 제공할 수 없음을 나타내는 데 사용됩니다.
이러한 값은 완전히 유효하며 JSON 콘텐츠 및 QJsonValue 의 정의되지 않은 비트와 달리 CBOR 스트림에 나타날 수 있습니다. 그러나 QJsonValue 의 정의되지 않음과 마찬가지로 잘못된 조회( QCborArray 의 경우 인덱스가 범위를 벗어났거나 QCborMap 의 경우 키를 찾을 수 없음)의 경우 CBOR 컨테이너의 value() 또는 읽기 전용 연산자[] 에 의해 반환됩니다. 이러한 경우는 Undefined 값과 구분할 수 없으므로 필요한 경우 QCborArray 크기를 확인하고 QCborMap 이터레이터 API를 사용하세요.
단순 유형
CBOR은 Null 및 Undefined와 같이 다른 값을 포함하지 않는 추가 단순 유형을 지원합니다. 이를 "단순 유형"과 "단순 값"이라고 서로 바꿔서 부릅니다. CBOR은 부울을 두 가지 유형( true
및 false
)으로 인코딩하지만, QCborValue에는 이를 위한 편리한 API가 있습니다.
현재 정의된 다른 CBOR 단순 유형은 없습니다. QCborValue는 isSimpleType() 및 toSimpleType()와 같은 API를 통해 번호로 간단히 지원하며, Qt API가 업데이트되기 전에 향후 사양과의 호환성을 위해 사용할 수 있습니다. 다른 CBOR 구현에서는 이를 완전히 지원하지 않을 수 있으므로 해당 사양 이전에 사용하는 것은 권장하지 않습니다.
CBOR 지원
QCborValue는 표준 및 엄격한 스트림을 생성하는 데 필요한 모든 CBOR 기능을 지원합니다. RFC 7049에 명시된 거의 모든 기능을 구현합니다.
다음 표에는 QCborValue가 지원하는 CBOR 기능이 나열되어 있습니다.
기능 | 지원 |
---|---|
부호 없는 숫자 | 예(qint64 범위) |
음수 | 예(qint64 범위) |
바이트 문자열 | 예 |
텍스트 문자열 | 예 |
청크 문자열 | 아래 참조 |
태그 | 예(임의) |
부울 | Yes |
Null | Yes |
정의되지 않음 | 예 |
임의의 단순 값 | 예 |
반정밀도 부동 소수점(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와 동일합니다.
{CBOR 데이터 구문 분석 및 표시}
QCborArray, QCborMap, QCborStreamReader, QCborStreamWriter, QJsonValue, QJsonDocument, 직렬화 변환기, 게임 저장 및 로드도참조하세요 .
멤버 유형 문서
열거형 QCborValue::진단노테이션옵션
플래그 QCborValue::진단노테이션옵션
이 Enum은 toDiagnosticNotation()의 옵션 인자로 사용되어 출력 형식을 수정합니다.
상수 | Value | 설명 |
---|---|---|
QCborValue::Compact | 0x00 | 줄 바꿈을 사용하지 않아 간결한 표현을 생성합니다. |
QCborValue::LineWrapped | 0x01 | 줄 바꿈(줄 바꿈은 한 줄에 하나씩 QCborValue )을 사용합니다. |
QCborValue::ExtendedFormat | 0x02 | RFC 7049에 없는 몇 가지 다른 옵션을 사용하여 값을 표현합니다. 이러한 옵션은 변경될 수 있습니다. |
현재 ExtendedFormat
은 바이트 배열이 표현되는 방식을 변경합니다. 이 옵션이 없으면 항상 공백 없이 16진법으로 인코딩됩니다. 이 옵션을 사용하면 QCborValue::toCbor()는 상황에 따라 공백이 있는 16진수, base64 또는 base64url 인코딩 중 하나를 사용합니다.
진단 표기법 옵션 유형은 QFlags<진단 표기법 옵션>에 대한 typedef입니다. 이 유형은 DiagnosticNotationOption 값의 OR 조합을 저장합니다.
toDiagnosticNotation()도 참조하세요 .
열거형 QCborValue::EncodingOption
플래그 QCborValue::EncodingOptions
이 열거형은 toCbor()의 옵션 인수에 사용되어 인코더의 동작을 수정합니다.
상수 | Value | 설명 |
---|---|---|
QCborValue::NoTransformation | 0 | (기본값) 변환을 수행하지 않습니다. |
QCborValue::UseFloat | 0x02 | 가능한 경우 인코더에 IEEE 754 단정밀도 부동 소수점(즉, float )을 사용하도록 지시합니다. |
QCborValue::UseFloat16 | UseFloat | 0x04 | 가능한 경우 인코더에 IEEE 754 반정밀도 부동 소수점(즉, qfloat16 )을 사용하도록 지시합니다. UseFloat 을 의미합니다. |
QCborValue::UseIntegers | 0x08 | Double 유형의 값에 정수가 포함될 때마다 인코더에 정수를 사용하도록 지시합니다. |
UseFloat16
을 사용하는 것은 스트림을 캐노니컬 형식으로 인코딩하는 데 필요하지만, 그 외에는 필요하지 않습니다.
EncodingOptions 유형은 QFlags<EncodingOption>에 대한 typedef입니다. EncodingOption 값의 OR 조합을 저장합니다.
toCbor()도 참조하세요 .
enum QCborValue::Type
이 열거형은 QCborValue 유형을 나타냅니다. type () 함수에 의해 반환됩니다.
CBOR 기본 제공 유형은 다음과 같습니다:
Constant | 값 | 설명 |
---|---|---|
QCborValue::Integer | 0x00 | qint64 : 정수 값 |
QCborValue::ByteArray | 0x40 | QByteArray바이트 배열("바이트 문자열") |
QCborValue::String | 0x60 | QString: 유니코드 문자열("텍스트 문자열") |
QCborValue::Array | 0x80 | QCborArrayQCborValues의 배열 |
QCborValue::Map | 0xa0 | QCborMapQCborValues의 연관 컨테이너 |
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 | QUrlURL 또는 URI |
QCborValue::RegularExpression | 0x10023 | QRegularExpression: 정규식 패턴 |
QCborValue::Uuid | 0x10025 | QUuidUUID |
type()도 참조하세요 .
멤버 함수 문서
QCborValue::QCborValue(QCborArray &&a)
QCborValue::QCborValue(const QCborArray &a)
배열 a 을 사용하여 QCborValue 을 만듭니다. 이 배열은 나중에 toArray()를 사용하여 검색할 수 있습니다.
toArray(), isArray() 및 isMap()도 참조하세요 .
지도 m 를 사용하여 QCborValue 를 만듭니다. 나중에 toMap()를 사용하여 지도를 검색할 수 있습니다.
toMap(), isMap() 및 isArray()도 참조하세요 .
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()도 참조하세요 .
[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 도 전달합니다.
QCborValue::QCborValue()
Undefined 유형의 QCborValue를 생성합니다.
CBOR 정의되지 않은 값은 일반적으로 이전 작업이 예상대로 완료되지 않은 결과로 인해 누락된 정보를 나타내는 데 사용됩니다. 또한 QCborArray 및 QCborMap API에서 검색된 항목을 찾을 수 없음을 나타내는 데 사용됩니다.
정의되지 않은 값은 Undefined simple type 으로 표시되므로 정의되지 않은 값을 가진 QCborValues는 isSimpleType() 및 isSimpleType(QCborSimpleType::Undefined)
에 대해서도 참을 반환합니다.
정의되지 않은 값은 null 값과 다릅니다.
정의되지 않은 값을 가진 QCborValue 객체도 유효하지 않은 QCborValue 객체와 다릅니다. API는 유효하지 않은 QCborValue를 생성하지 않지만 구문 분석 오류로 인해 존재할 수 있습니다.
isUndefined(), isNull() 및 isSimpleType()도 참조하세요 .
QCborValue::QCborValue(QCborSimpleType st)
간단한 타입의 QCborValue를 생성합니다 st. 이 유형은 나중에 toSimpleType() 및 isSimpleType(st)를 사용하여 검색할 수 있습니다.
CBOR 단순 유형은 C++의 std::nullptr_t
유형처럼 연관된 값이 없는 유형으로, 가능한 유일한 값은 nullptr
입니다.
st 가 QCborSimpleType::Null
인 경우 결과 QCborValue 는 Null 유형이 되고 QCborSimpleType::Undefined
도 마찬가지로 됩니다. st 가 QCborSimpleType::False
또는 QCborSimpleType::True
인 경우 생성된 QCborValue는 각각 거짓 또는 참 값을 포함하는 부울이 됩니다.
이 함수는 API에 정의되지 않은 간단한 유형에 사용할 수 있습니다. 예를 들어, 단순 유형 12로 QCborValue를 생성하려면 다음과 같이 작성할 수 있습니다:
QCborValue value(QCborSimpleType(12));
단순 유형은 다른 구현에서 제대로 지원하지 않을 수 있으므로 해당 유형에 대한 사양이 게시될 때까지 사용해서는 안 됩니다. 단순 타입 값 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)
부울 값으로 QCborValue를 생성합니다 b. 이 값은 나중에 toBool()를 사용하여 검색할 수 있습니다.
내부적으로 CBOR 부울은 한 쌍의 유형으로 표현되는데, 하나는 참이고 다른 하나는 거짓입니다. 따라서 부울 QCborValues는 isSimpleType() 및 isSimpleType(QCborSimpleType::False)
또는 isSimpleType(QCborSimpleType::True)
중 하나에 대해 참을 반환합니다.
toBool(), isBool(), isTrue(), isFalse() 및 isSimpleType()도 참조하세요 .
QCborValue::QCborValue(const QByteArray &ba)
바이트 배열 값으로 QCborValue를 생성합니다 ba. 이 값은 나중에 toByteArray()를 사용하여 검색할 수 있습니다.
toByteArray(), isByteArray() 및 isString()도 참조하세요 .
[explicit]
QCborValue::QCborValue(const QDateTime &dt)
날짜/시간 확장 유형으로 dt 로 표시되는 값을 포함하는 QCborValue 객체를 만듭니다. 이 값은 나중에 toDateTime()를 사용하여 검색할 수 있습니다.
CBOR 날짜/시간 유형은 태그를 사용하는 확장 유형으로, DateTime 으로 태그된 문자열(ISO 날짜 형식) 또는 UnixTime_t 으로 태그된 숫자(1970년 시작 이후 초, UTC) 중 하나입니다. CBOR 스트림을 구문 분석할 때 QCborValue는 UnixTime_t 을 문자열 기반 유형으로 변환합니다.
toDateTime(), isDateTime() 및 taggedValue()도 참조하세요 .
[explicit]
QCborValue::QCborValue(const QRegularExpression &rx)
정규식 패턴 확장 유형으로 rx 로 표시되는 값을 포함하는 QCborValue 객체를 생성합니다. 이 값은 나중에 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()도 참조하세요 .
QCborValue::QCborValue(double d)
부동 소수점 값 d 으로 QCborValue를 생성합니다. 이 값은 나중에 toDouble()를 사용하여 검색할 수 있습니다.
CBOR 부동 소수점 값은 정수 값과 구별됩니다. 따라서 정수가 포함된 QCborValue 객체는 객체에 포함된 값이 동일하더라도 부동 소수점이 포함된 QCborValue 객체와 다르게 비교됩니다.
toDouble(), isDouble() 및 isInteger()도 참조하세요 .
QCborValue::QCborValue(qint64 i)
정수 값으로 QCborValue를 생성합니다 i. 이 값은 나중에 toInteger()를 사용하여 검색할 수 있습니다.
CBOR 정수 값은 부동 소수점 값과 구별됩니다. 따라서 정수가 포함된 QCborValue 객체는 객체에 포함된 값이 동일하더라도 부동 소수점이 포함된 QCborValue 객체와 다르게 비교됩니다.
toInteger(), isInteger() 및 isDouble()도 참조하세요 .
QCborValue::QCborValue(std::nullptr_t)
Null 유형의 QCborValue를 생성합니다.
CBOR null 값은 제공되지 않은 선택적 값을 나타내는 데 사용됩니다. 널 값은 일반적으로 이전 오류나 문제의 결과가 아니라는 점에서 정의되지 않은 값과 구별됩니다.
isNull(), isUndefined() 및 isSimpleType()도 참조하세요 .
QCborValue::QCborValue(QLatin1StringView s)
이 함수는 오버로드된 함수입니다.
s 에서 조회한 라틴-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 같은 확장 형식을 포함하는 QCborValue 과 그에 상응하는 태그가 지정된 표현을 동일하게 비교합니다. 예를 들어 다음 표현식은 참입니다:
QCborValue(QUrl("https://example.com")) == QCborValue(QCborKnownTags::Url, "https://example.com");
QUrl 및 QDateTime 같은 Qt XML 유형은 인수를 정규화하고 그렇지 않으면 수정한다는 점에 유의하세요. 위의 표현식은 오른쪽의 문자열이 왼쪽의 QCborValue 이 취할 정규화된 값이기 때문에 참입니다. 예를 들어 "https" 부분이 양쪽 모두 대문자인 경우 비교가 실패합니다. 정규화에 대한 자세한 내용은 QCborValue 에서 수행되는 정규화에 대한 자세한 내용은 해당 Qt XML 유형을 취하는 생성자 문서를 참조하세요.
정렬 순서
CBOR의 정렬 순서는 RFC 7049, 섹션 3.9에 정의되어 있으며, 여기서는 캐노니컬 인코딩을 따를 때 맵에서 키의 정렬에 대해 설명합니다. 이 사양에 따르면 "정렬은 키 데이터 항목의 표현 바이트에 대해 수행"되며 그 결과로 다음과 같은 결과가 나열됩니다:
- "두 키의 길이가 다른 경우 길이가 짧은 키가 먼저 정렬됩니다."
- "두 키의 길이가 같으면 (바이트 단위) 어휘 순서에서 더 낮은 값을 가진 키가 더 일찍 정렬됩니다."
이 함수의 결과는 나중에 포함된 요소를 비교하여 검색할 때와 다른 결과를 가져오는 놀라운 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::fromJsonValue(const QJsonValue &v)
v 에 포함된 JSON 값을 해당 CBOR 값으로 변환하여 반환합니다. CBOR 유형 집합이 JSON보다 더 풍부하기 때문에 JSON에서 CBOR로 변환할 때 데이터 손실은 없습니다. 또한 이 함수를 사용하여 CBOR로 변환된 값은 데이터 손실 없이 toJsonValue()를 사용하여 다시 JSON으로 변환할 수 있습니다.
다음 표에는 JSON 유형과 CBOR 유형의 매핑이 나와 있습니다:
JSON 유형 | CBOR 유형 |
---|---|
Bool | Bool |
숫자 | 정수(숫자에 분수가 없고 qint64 범위에 있는 경우) 또는 더블 |
문자열 | 문자열 |
Array | Array |
Object | Map |
Null | Null |
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()) | 정의되지 않음 |
bool | Bool |
std::nullptr_t | Null |
short , ushort , int , uint , qint64 | Integer |
quint64 | 정수, 또는 qint64 범위를 벗어난 경우 더블 |
float , double | Double |
QByteArray | ByteArray |
QDateTime | DateTime |
QCborSimpleType | 단순 유형 |
QJsonArray | QCborArray::formJsonArray()를 사용하여 변환된 배열 |
QJsonDocument | 배열 또는 맵 |
QJsonObject | Map, QCborMap::fromJsonObject()를 사용하여 변환됨 |
QJsonValue | fromJsonValue()를 사용하여 변환됨 |
QRegularExpression | RegularExpression |
QString | String |
QStringList | Array |
QVariantHash | Map |
QVariantList | Array |
QVariantMap | Map |
QUrl | Url |
QUuid | Uuid |
QVariant::isNull()가 참을 반환하면 QVariant 이 전달하는 유형에 관계없이 null QCborValue 이 반환되거나 목록 또는 객체에 삽입됩니다. QVariant::isNull ()에 영향을 미치는 Qt 6.0의 동작 변경은 이 함수에도 영향을 줍니다.
위에 나열되지 않은 다른 유형의 경우 QVariant::toString()를 호출하여 문자열로 변환을 시도하지만 항상 그런 것은 아닙니다. 변환에 실패하면 해당 값은 정의되지 않은 CBOR 값으로 대체됩니다. QVariant::toString () 역시 대부분의 유형에서 손실됩니다.
QVariant::toString()를 통한 변환은 언제든지 변경될 수 있다는 점에 유의하세요. QVariant 및 QCborValue 모두 향후 더 많은 유형을 지원하도록 확장될 수 있으며, 이 경우 이 함수가 변환을 수행하는 방식이 변경될 수 있습니다.
toVariant(), fromJsonValue(), QCborArray::toVariantList(), QCborMap::toVariantMap() 및 QJsonValue::fromVariant()도 참조하세요 .
bool QCborValue::isArray() const
QCborValue 이 배열 유형인 경우 참을 반환합니다. 배열 값은 toArray()를 사용하여 검색할 수 있습니다.
bool QCborValue::isBool() const
QCborValue 이 부울인 경우 참을 반환합니다. 이 값은 toBool()를 사용하여 검색할 수 있습니다.
type(), toBool(), isTrue() 및 isFalse()도 참조하세요 .
bool QCborValue::isByteArray() const
QCborValue 이 바이트 배열 유형인 경우 참을 반환합니다. 바이트 배열 값은 toByteArray()를 사용하여 검색할 수 있습니다.
type() 및 toByteArray()도 참조하세요 .
bool QCborValue::isContainer() const
이 편의 함수는 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 이 거짓 값의 부울이면 참을 반환합니다. 이 함수는 내부적으로 CBOR 부울이 참과 거짓의 두 가지 유형으로 저장되기 때문에 존재합니다.
type(), isBool(), isTrue() 및 toBool()도 참조하세요 .
bool QCborValue::isInteger() const
QCborValue 이 정수형인 경우 참을 반환합니다. 정수 값은 toInteger()를 사용하여 검색할 수 있습니다.
bool QCborValue::isInvalid() const
QCborValue 이 유효한 유형이 아닌 경우 참을 반환합니다. 유효하지 않은 QCborValues는 정의되지 않은 값을 가진 것과 구별되며 일반적으로 디코딩 오류를 나타냅니다.
isUndefined() 및 isNull()도 참조하세요 .
bool QCborValue::isMap() const
QCborValue 이 지도 유형인 경우 true를 반환합니다. 지도 값은 toMap()를 사용하여 검색할 수 있습니다.
bool QCborValue::isNull() const
QCborValue 이 null 유형인 경우 true를 반환합니다.
CBOR null 값은 제공되지 않은 선택적 값을 나타내는 데 사용됩니다. 널 값은 일반적으로 이전 오류나 문제의 결과가 아니라는 점에서 정의되지 않은 값과 구별됩니다.
Null 값은 정의되지 않은 값 및 잘못된 QCborValue 객체와 구별됩니다. API는 유효하지 않은 QCborValues를 생성하지 않지만 구문 분석 오류의 결과로 존재할 수 있습니다.
type(), isUndefined() 및 isInvalid()도 참조하세요 .
bool QCborValue::isRegularExpression() const
QCborValue 에 정규식 패턴이 포함되어 있으면 참을 반환합니다. 패턴은 toRegularExpression()를 사용하여 검색할 수 있습니다.
type() 및 toRegularExpression()도 참조하세요 .
bool QCborValue::isSimpleType() const
QCborValue 이 CBOR 단순 유형 중 하나인 경우 참을 반환합니다. 나중에 API에 열거형이 없는 유형에 대해서도 type()를 사용하여 유형 자체를 검색할 수 있습니다. isSimpleType (QCborSimpleType) 오버로드를 통해서도 확인할 수 있습니다.
QCborSimpleType, isSimpleType(QCborSimpleType) 및 toSimpleType()도 참조하세요 .
bool QCborValue::isSimpleType(QCborSimpleType st) const
이 함수는 오버로드된 함수입니다.
QCborValue 이 단순 유형이고 toSimpleType()이 st 을 반환하면 참을 반환하고 그렇지 않으면 거짓을 반환합니다. 이 함수는 API에 열거형이 없는 경우에도 모든 CBOR 단순 유형을 확인하는 데 사용할 수 있습니다. 예를 들어 값 12의 단순 유형에 대해 다음과 같이 작성할 수 있습니다:
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가 인식하는 확장 유형에 대해서도 참을 반환합니다. 확장 유형을 지원하도록 Qt XML이 업데이트되기 전에 확장 유형을 직접 처리하는 코드의 경우 taggedValue()를 사용하여 태그 + 태그된 값 쌍을 다시 만들 수 있습니다.
type(), tag(), taggedValue() 및 taggedValue()도 참조하세요 .
bool QCborValue::isTrue() const
QCborValue 이 참값을 갖는 부울이면 참을 반환합니다. 이 함수는 내부적으로 CBOR 부울이 거짓과 참의 두 가지 유형으로 저장되기 때문에 존재합니다.
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()를 사용하여 검색할 수 있습니다.
bool QCborValue::isUuid() const
QCborValue 에 UUID가 포함되어 있으면 true를 반환합니다. 이 값은 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()도 참조하세요 .
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
이것은 오버로드된 함수입니다.
opt 에 지정된 옵션을 사용하여 이 QCborValue 객체를 writer 에 지정된 라이터로 CBOR 표현으로 인코딩합니다. 예를 들어 더 큰 배열에서 서로 다른 요소를 인코딩하기 위해 여러 개의 QCborValue에서 동일한 라이터를 사용할 수 있습니다.
이 함수는 QCborValue 또는 포함된 항목 중 하나(맵 또는 배열인 경우)가 유효하지 않은 경우를 제외하고는 실패하지 않습니다. 유효하지 않은 유형은 API에서 정상적으로 생성되지 않지만 디코딩 오류로 인해 발생할 수 있습니다.
기본적으로 이 함수는 QCborValue 의 값에 대해 변환을 수행하지 않고 모든 부동 소수점을 배정밀도(binary64) 유형으로 직접 씁니다. UseFloat 옵션을 지정하면 해당 표현을 사용할 때 정밀도 손실이 없는 모든 부동 소수점 값에 대해 단정도(binary32)를 사용합니다. 여기에는 무한대와 NaN 값이 포함됩니다.
마찬가지로 UseFloat16 을 지정한 경우, 이 함수는 반정밀도(이진16) 부동 소수점으로 변환해도 정밀도 손실이 없는 경우 반정밀도(이진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 타입인 경우 반환합니다. 정수 유형인 경우 이 함수는 정수로 변환된 정수 값을 반환합니다. 그 외의 경우에는 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 유형 | 설명 |
---|---|---|
Bool | Bool | 데이터 손실 없음 |
Double | 숫자 | 무한대와 NaN은 Null로 변환되며, 다른 값은 데이터 손실이 없습니다. |
Integer | 숫자 | 정수가253보다 크거나 -253보다 작은 경우 변환 시 데이터 손실이 발생할 수 있습니다. |
Null | Null | 데이터 손실 없음 |
정의되지 않음 | Null | 유형 정보 손실 |
문자열 | 문자열 | 데이터 손실 없음 |
바이트 배열 | 문자열 | Base64url과 같은 무손실 인코딩으로 변환되지만 문자열과 바이트 배열의 구분이 사라집니다. |
기타 간단한 유형 | 문자열 | 유형 정보가 손실됨 |
Array | 배열 | 포함된 각 값에 변환이 적용됩니다. |
Map | Object | 키는 문자열로 변환되며, 값은 이 표에 따라 변환됩니다. |
태그 및 확장 유형 | Special | 태그 번호 자체는 손실되고 태그된 값은 JSON으로 변환됩니다. |
CBOR 맵 키를 문자열로 변환하는 방법에 대한 자세한 내용은 QCborMap::toJsonObject()를 참조하세요.
이 QCborValue 에 정의되지 않은 값이 포함되어 있으면 이 함수는 정의되지 않은 QJsonValue 도 반환합니다. JSON은 정의되지 않은 값을 지원하지 않으며 정의되지 않은 QJsonValues는 사양의 확장입니다. 이러한 값은 QJsonArray 또는 QJsonObject 에 보관할 수 없지만 함수에서 반환하여 실패를 나타낼 수 있습니다. 다른 모든 의도와 목적에서는 null과 동일합니다.
태그 및 확장 유형의 특수 처리
일부 태그는 특수하게 처리되어 태그 값의 변환을 CBOR에서 JSON으로 변경합니다. 다음 표에는 이러한 특수한 경우가 나열되어 있습니다:
태그 | CBOR 유형 | 변환 |
---|---|---|
ExpectedBase64url | 바이트 배열 | 바이트 배열을 Base64url로 인코딩합니다. |
ExpectedBase64 | 바이트 배열 | 바이트 배열을 Base64로 인코딩합니다. |
ExpectedBase16 | 바이트 배열 | 바이트 배열을 헥스로 인코딩합니다. |
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
URL 확장 유형인 경우 QCborValue 에 저장된 URL 값을 반환합니다. 그렇지 않으면 defaultValue 을 반환합니다.
이 함수는 다른 유형에서 QUrl 로의 변환을 수행하지 않습니다.
isUrl(), isTag() 및 taggedValue()도 참조하세요 .
QUuid QCborValue::toUuid(const QUuid &defaultValue = {}) const
UUID 확장 유형인 경우 이 QCborValue 에 저장된 UUID 값을 반환합니다. 그렇지 않으면 defaultValue 을 반환합니다.
이 함수는 다른 유형에서 QUuid 로의 변환을 수행하지 않습니다.
isUuid(), isTag() 및 taggedValue()도 참조하세요 .
QVariant QCborValue::toVariant() const
이 값을 네이티브 Qt 유형으로 변환하고 해당하는 QVariant 을 반환합니다.
다음 표에는 QCborValue types 와 Qt meta types 간에 수행된 매핑이 나열되어 있습니다.
CBOR 타입 | Qt 또는 C++ 타입 | 참고 |
---|---|---|
Integer | qint64 | |
Double | double | |
Bool | bool | |
Null | std::nullptr_t | |
정의되지 않음 | 유형 없음 (QVariant()) | |
바이트 배열 | QByteArray | |
문자열 | QString | |
배열 | QVariantList | 모든 값을 재귀적으로 변환합니다. |
Map | QVariantMap | 키 유형은 "문자열화" |
기타 간단한 유형 | QCborSimpleType | |
DateTime | QDateTime | |
Url | QUrl | |
RegularExpression | QRegularExpression | |
Uuid | QUuid | |
기타 태그 | Special | 태그는 무시되고 태그가 지정된 값은 이 함수를 사용하여 변환됩니다. |
CBOR 맵과 배열의 값도 이 함수를 사용하여 재귀적으로 변환되어 QVariantMap 및 QVariantList 에 대신 배치됩니다. QCborMap 및 QCborArray 은 QVariant 내부에 저장되지 않습니다.
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 이 배열인 경우 먼저 맵으로 변환되며(따라서 map[i]
은 각 인덱스에 대해 array[i]
, i
은 유효한 array[i]
), 그렇지 않으면 맵이 아닌 경우 빈 맵으로 덮어쓰게 됩니다.
operator[](qint64), QCborMap::operator[], QCborMap::value() 및 QCborMap::find()도 참조하세요 .
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()도 참조하세요 .
QCborValueRef QCborValue::operator[](QLatin1StringView key)
이 함수는 오버로드된 함수입니다.
주어진 key 을 사용하여 이 항목의 항목을 읽거나 수정하는 데 사용할 수 있는 QCborValueRef를 맵으로 반환합니다. QCborValue 이 QCborMap 인 경우 이 함수는 해당 맵에서 일치하는 연산자[] 와 동일합니다.
참조를 반환하기 전에: QCborValue 이 배열인 경우 먼저 맵으로 변환되며(따라서 map[i]
은 각 인덱스에 대해 array[i]
, i
은 유효한 array[i]
), 그렇지 않으면 맵이 아닌 경우 빈 맵으로 덮어쓰게 됩니다.
operator[](qint64), QCborMap::operator[], QCborMap::value() 및 QCborMap::find()도 참조하세요 .
QCborValueRef QCborValue::operator[](qint64 key)
이 함수는 오버로드된 함수입니다.
주어진 key 을 사용하여 이 항목을 맵 또는 배열로 읽거나 수정하는 데 사용할 수 있는 QCborValueRef를 반환합니다. QCborValue 이 QCborMap 이거나 0 <= 키 < 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 객체가 맵이 아닌 경우 정의되지 않은 값을 반환합니다.
이 함수는 다음과 같습니다:
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()도 참조하세요 .
관련 비회원
[noexcept]
bool operator!=(const QCborValue &lhs, const QCborValue &rhs)
lhs 와 rhs 을 비교하여 내용이 다르면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 각 QCborValue 에 배열이나 맵이 포함된 경우, 비교는 그 안에 포함된 요소에 대해 재귀적으로 이루어집니다.
Qt의 CBOR 동등성에 대한 자세한 내용은 QCborValue::compare()를 참조하십시오.
compare(), QCborValue::operator==(), QCborMap::operator==(), operator==() 및 operator<()도 참조하세요 .
[noexcept]
bool operator<(const QCborValue &lhs, const QCborValue &rhs)
lhs 와 rhs 을 비교하여 lhs 이 rhs 보다 먼저 정렬되어야 하는 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 각 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 과 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 각 QCborValue 에 배열 또는 맵이 포함된 경우 비교는 그 안에 포함된 요소에 대해 재귀적으로 수행됩니다.
CBOR 정렬 순서에 대한 자세한 내용은 QCborValue::compare()를 참조하세요.
compare(), QCborValue::operator<(), QCborMap::operator==(), operator==() 및 operator!=()도 참조하세요 .
[noexcept]
bool operator==(const QCborValue &lhs, const QCborValue &rhs)
lhs 와 rhs 을 비교하여 동일한 내용을 담고 있으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 각 QCborValue 에 배열이나 맵이 포함된 경우, 비교는 그 안에 포함된 요소에 대해 재귀적으로 이루어집니다.
Qt의 CBOR 동등성에 대한 자세한 내용은 compare()를 참조하십시오.
compare(), QCborValue::operator==(), QCborMap::operator==(), operator!=() 및 operator<()도 참조하세요 .
[noexcept]
bool operator>(const QCborValue &lhs, const QCborValue &rhs)
lhs 와 rhs 을 비교하여 lhs 이 rhs 다음으로 정렬되어야 하는 경우 참을 반환하고 그렇지 않으면 거짓을 반환합니다. 각 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 과 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 각 QCborValue 에 배열 또는 맵이 포함된 경우 비교는 그 안에 포함된 요소에 대해 재귀적으로 수행됩니다.
CBOR 정렬 순서에 대한 자세한 내용은 QCborValue::compare()를 참조하세요.
compare(), QCborValue::operator>(), QCborMap::operator==(), operator==() 및 operator!=()도 참조하세요 .
© 2025 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.