QCborStreamReader Class

QCborStreamReader 클래스는 QByteArray 또는 QIODevice 에서 작동하는 간단한 CBOR 스트림 디코더입니다.. ..

헤더: #include <QCborStreamReader>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

참고: 이 클래스의 모든 함수는 재인용됩니다.

공용 형

struct StringResult
enum StringResultCode { EndOfString, Ok, Error }
enum Type { UnsignedInteger, NegativeInteger, ByteArray, ByteString, String, …, Invalid }

공용 함수

QCborStreamReader()
QCborStreamReader(QIODevice *device)
QCborStreamReader(const QByteArray &data)
QCborStreamReader(const char *data, qsizetype len)
QCborStreamReader(const quint8 *data, qsizetype len)
~QCborStreamReader()
void addData(const QByteArray &data)
void addData(const char *data, qsizetype len)
void addData(const quint8 *data, qsizetype len)
void clear()
int containerDepth() const
qint64 currentOffset() const
qsizetype currentStringChunkSize() const
QIODevice *device() const
bool enterContainer()
bool hasNext() const
bool isArray() const
bool isBool() const
bool isByteArray() const
bool isContainer() const
bool isDouble() const
bool isFalse() const
bool isFloat16() const
bool isFloat() const
bool isInteger() const
bool isInvalid() const
bool isLengthKnown() const
bool isMap() const
bool isNegativeInteger() const
bool isNull() const
bool isSimpleType() const
bool isSimpleType(QCborSimpleType st) const
bool isString() const
bool isTag() const
bool isTrue() const
bool isUndefined() const
bool isUnsignedInteger() const
bool isValid() const
QCborError lastError() const
bool leaveContainer()
quint64 length() const
bool next(int maxRecursion = 10000)
QCborStreamReader::Type parentContainerType() const
(since 6.7) QByteArray readAllByteArray()
(since 6.7) QString readAllString()
(since 6.7) QByteArray readAllUtf8String()
(since 6.7) bool readAndAppendToByteArray(QByteArray &dst)
(since 6.7) bool readAndAppendToString(QString &dst)
(since 6.7) bool readAndAppendToUtf8String(QByteArray &dst)
QCborStreamReader::StringResult<QByteArray> readByteArray()
QCborStreamReader::StringResult<QString> readString()
QCborStreamReader::StringResult<qsizetype> readStringChunk(char *ptr, qsizetype maxlen)
(since 6.7) QCborStreamReader::StringResult<QByteArray> readUtf8String()
void reparse()
void reset()
void setDevice(QIODevice *device)
bool toBool() const
double toDouble() const
qfloat16 toFloat16() const
float toFloat() const
qint64 toInteger() const
QCborNegativeInteger toNegativeInteger() const
QCborSimpleType toSimpleType() const
QCborTag toTag() const
quint64 toUnsignedInteger() const
QCborStreamReader::Type type() const

상세 설명

이 클래스는 QByteArray 또는 QIODevice 에서 직접 CBOR 콘텐츠 스트림을 디코딩하는 데 사용할 수 있습니다. CBOR은 JSON과 호환되는 매우 컴팩트한 형태의 이진 데이터 인코딩인 간결한 이진 객체 표현(Concise Binary Object Representation)입니다. 이 형식은 많은 새로운 RFC에 사용된 IETF CoRE(Constrained RESTful Environments) WG에서 만들었습니다. CoAP 프로토콜과 함께 사용하기 위한 것입니다.

QCborStreamReader는 QXmlStreamReader 와 유사한 StAX와 유사한 API를 제공합니다. 이를 사용하려면 CBOR 인코딩에 대한 약간의 지식이 필요합니다. 더 간단한 API는 QCborValue, 특히 디코딩 함수 QCborValue::fromCbor()를 참조하세요.

일반적으로 소스 QByteArray 또는 QIODevice 를 생성자에 파라미터로 전달하여 QCborStreamReader를 생성한 다음 디코딩에 오류가 없는 경우 스트림에서 요소를 팝아웃합니다. CBOR 유형에는 세 가지 종류가 있습니다:

종류Types동작
고정 너비정수, 태그, 단순 유형, 부동 소수점값은 QCborStreamReader에 의해 미리 구문 분석되므로 접근자 함수는 const 입니다. next ()를 호출해야 진행됩니다.
문자열바이트 배열, 텍스트 문자열길이(알려진 경우)는 사전 구문 분석되지만 문자열 자체는 사전 구문 분석되지 않습니다. 접근자 함수는 const가 아니며 메모리를 할당할 수 있습니다. 일단 호출되면 접근자 함수는 자동으로 다음 요소로 진행합니다.
컨테이너배열, 지도길이(알려진 경우)는 미리 구문 분석됩니다. 요소에 액세스하려면 enterContainer()를 호출하고 모든 요소를 읽은 다음 leaveContainer()를 호출해야 합니다. 이 함수는 다음 요소로 진행합니다.

따라서 프로세서 함수는 일반적으로 다음과 같이 보입니다:

   void handleStream(QCborStreamReader &reader)
   {
       switch (reader.type())
       case QCborStreamReader::UnsignedInteger:
       case QCborStreamReader::NegativeInteger:
       case QCborStreamReader::SimpleType:
       case QCborStreamReader::Float16:
       case QCborStreamReader::Float:
       case QCborStreamReader::Double:
           handleFixedWidth(reader);
           reader.next();
           break;
       case QCborStreamReader::ByteArray:
       case QCborStreamReader::String:
           handleString(reader);
           break;
       case QCborStreamReader::Array:
       case QCborStreamReader::Map:
           reader.enterContainer();
           while (reader.lastError() == QCborError::NoError)
               handleStream(reader);
           if (reader.lastError() == QCborError::NoError)
               reader.leaveContainer();
       }
   }

CBOR 지원

다음 표에는 QCborStreamReader가 지원하는 CBOR 기능이 나열되어 있습니다.

기능지원
부호 없는 숫자예(전체 범위)
음수예(전체 범위)
바이트 문자열
텍스트 문자열
청크 문자열
태그예(임의)
부울Yes
NullYes
정의되지 않음
임의의 단순 값
반정밀도 부동 소수점(16비트)
단정밀도 실수(32비트)
배정밀도 부동 소수점(64비트)
무한대 및 NaN 부동 소수점
길이가 결정된 배열 및 맵
불확정 길이 배열 및 맵
문자열 및 정수 이외의 맵 키 유형예(임의)

유효하지 않거나 불완전한 CBOR 스트림 처리하기

QCborStreamReader는 자체적으로 손상된 입력을 감지할 수 있습니다. 이 라이브러리는 모든 종류의 유효하지 않은 입력에 대해 광범위하게 테스트되었으며 오류를 보고할 수 있습니다. 오류가 감지되면 QCborStreamReader는 lastError()를 QCborError::NoError 이외의 값으로 설정하여 어떤 상황이 감지되었는지를 나타냅니다.

정상적인 항목 구문 분석 중에 QCborStreamReader가 감지한 대부분의 오류는 복구할 수 없습니다. QCborStreamReader를 사용하는 코드는 올바르게 디코딩된 데이터를 처리하거나 전체 데이터를 폐기하도록 선택할 수 있습니다.

복구 가능한 유일한 오류는 QCborError::EndOfFile 이며, 이는 구문 분석을 완료하기 위해 더 많은 데이터가 필요함을 나타냅니다. 이 상황은 파이프(QProcess) 또는 소켓(QTcpSocket, QUdpSocket, QNetworkReply, 등)과 같은 비동기 소스에서 데이터를 읽을 때 유용합니다. 더 많은 데이터가 도착하면 주변 코드에서 addData()( QByteArray 에서 파싱하는 경우)를 호출하거나 reparse()(이제 더 많은 데이터를 사용할 수 있는 QIDOevice를 직접 읽는 경우)를 호출해야 합니다( setDevice() 참조).

또한 QCborStreamWriter, QCborValue, QXmlStreamReader, CBOR 데이터 파싱 및 표시, 직렬화 변환기, 게임 저장 및 로드를참조하세요 .

멤버 유형 문서

enum QCborStreamReader::StringResultCode

이 열거형은 readString() 및 readByteArray()에서 반환되며 구문 분석의 상태를 나타내는 데 사용됩니다.

Constant설명
QCborStreamReader::EndOfString0오류 없이 문자열 구문 분석이 완료되었습니다.
QCborStreamReader::Ok1함수가 데이터를 반환했으며 오류가 없습니다.
QCborStreamReader::Error-1오류와 함께 구문 분석에 실패했습니다.

enum QCborStreamReader::Type

이 열거형에는 QCborStreamReader 에서 디코딩한 모든 가능한 CBOR 유형이 포함되어 있습니다. CBOR에는 7가지 주요 유형과 값이 없는 단순 유형, 부동 소수점 값이 있습니다.

Constant설명
QCborStreamReader::UnsignedInteger0x00(주요 유형 0)0~264 - 1(18,446,744,073,709,551,616) 범위.
QCborStreamReader::NegativeInteger0x20(주요 유형 1) -1 ~ -264 (-18,446,744,073,709,551,616) 범위
QCborStreamReader::ByteArrayByteString(주요 유형 2) 임의의 바이너리 데이터.
QCborStreamReader::ByteString0x40바이트 배열의 별칭입니다.
QCborStreamReader::StringTextString(주요 유형 3) 유니코드 텍스트(NUL을 포함할 수 있음).
QCborStreamReader::TextString0x60문자열에 대한 별칭
QCborStreamReader::Array0x80(주요 유형 4) 이질적인 항목의 배열.
QCborStreamReader::Map0xa0(주요 유형 5) 이기종 항목의 맵/사전.
QCborStreamReader::Tag0xc0(주요 유형 6) 일반 CBOR 항목에 추가적인 의미적 가치를 부여하는 숫자. 자세한 내용은 QCborTag 을 참조하세요.
QCborStreamReader::SimpleType0xe0(주요 유형 7) 더 이상의 가치를 지니지 않는 유형. 부울(참과 거짓), 널, 정의되지 않음 등이 포함됩니다.
QCborStreamReader::Float16HalfFloatIEEE 754 반정밀도 부동 소수점(qfloat16).
QCborStreamReader::HalfFloat0xf9Float16의 별칭입니다.
QCborStreamReader::Float0xfaIEEE 754 단정밀도 부동 소수점 (float).
QCborStreamReader::Double0xfbIEEE 754 배정밀도 부동 소수점 (double).
QCborStreamReader::Invalid0xff구문 분석 오류 또는 배열 또는 맵의 끝에 도달하여 유효한 유형이 아닙니다.

멤버 함수 문서

QCborStreamReader::QCborStreamReader()

소스 데이터가 없는 QCborStreamReader 객체를 생성합니다. 생성 후 QCborStreamReader는 구문 분석 오류를 보고합니다.

addData()를 호출하거나 setDevice()를 사용하여 다른 소스 장치를 설정하여 데이터를 더 추가할 수 있습니다.

addData() 및 isValid()도 참조하세요 .

[explicit] QCborStreamReader::QCborStreamReader(QIODevice *device)

이 함수는 오버로드된 함수입니다.

device 에서 읽어서 찾은 CBOR 스트림을 구문 분석할 QCborStreamReader 객체를 생성합니다. QCborStreamReader는 device 의 소유권을 가지지 않으므로 이 객체가 소멸될 때까지 유효하게 유지되어야 합니다.

[explicit] QCborStreamReader::QCborStreamReader(const QByteArray &data)

이 함수는 오버로드된 함수입니다.

data 에 있는 CBOR 스트림을 구문 분석할 QCborStreamReader 객체를 생성합니다.

QCborStreamReader::QCborStreamReader(const char *data, qsizetype len)

이것은 오버로드된 함수입니다.

data 에서 시작하는 len 바이트의 데이터로 QCborStreamReader 객체를 생성합니다. 포인터는 QCborStreamReader가 소멸될 때까지 유효해야 합니다.

QCborStreamReader::QCborStreamReader(const quint8 *data, qsizetype len)

이것은 오버로드된 함수입니다.

data 에서 시작하는 len 바이트의 데이터로 QCborStreamReader 객체를 생성합니다. 포인터는 QCborStreamReader가 소멸될 때까지 유효해야 합니다.

[noexcept] QCborStreamReader::~QCborStreamReader()

QCborStreamReader 개체를 삭제하고 관련된 모든 리소스를 해제합니다.

void QCborStreamReader::addData(const QByteArray &data)

CBOR 스트림에 data 을 추가하고 현재 요소를 복구합니다. 이 함수는 스트림을 처리하는 동안 이전에 데이터의 끝에 도달했지만 이제 더 많은 데이터를 사용할 수 있는 경우에 유용합니다.

void QCborStreamReader::addData(const char *data, qsizetype len)

이 함수는 오버로드된 함수입니다.

data 에서 시작하는 len 바이트의 데이터를 CBOR 스트림에 추가하고 현재 요소를 복구합니다. 이 함수는 이전에 스트림을 처리하는 동안 데이터의 끝에 도달했지만 이제 더 많은 데이터를 사용할 수 있는 경우에 유용합니다.

void QCborStreamReader::addData(const quint8 *data, qsizetype len)

이 함수는 오버로드된 함수입니다.

data 에서 시작하는 len 바이트의 데이터를 CBOR 스트림에 추가하고 현재 요소를 복구합니다. 이 함수는 이전에 스트림을 처리하는 동안 데이터의 끝에 도달했지만 이제 더 많은 데이터를 사용할 수 있는 경우에 유용합니다.

void QCborStreamReader::clear()

디코더 상태를 지우고 입력 소스 데이터를 빈 바이트 배열로 재설정합니다. 이 함수가 호출되면 QCborStreamReader 에 구문 분석 오류가 표시됩니다.

구문 분석할 데이터를 더 추가하려면 addData()를 호출합니다.

reset() 및 setDevice()도 참조하세요 .

int QCborStreamReader::containerDepth() const

이 스트림이 enterContainer()로 들어왔지만 아직 나가지 않은 컨테이너의 수를 반환합니다.

enterContainer() 및 leaveContainer()도 참조하세요 .

qint64 QCborStreamReader::currentOffset() const

현재 디코딩 중인 항목의 입력 스트림에서 오프셋을 반환합니다. 현재 오프셋은 소스 데이터가 QByteArray 이거나 디코딩이 시작될 때 처음에 위치했던 QIODevice 인 경우에만 지금까지 디코딩된 바이트 수입니다.

reset(), clear(), device()도 참조하세요 .

qsizetype QCborStreamReader::currentStringChunkSize() const

현재 텍스트 또는 바이트 문자열 청크의 크기를 반환합니다. CBOR 스트림에 청크가 아닌 문자열이 포함된 경우(즉, isLengthKnown()가 true)를 반환하는 경우 이 함수는 length()와 동일한 전체 문자열의 크기를 반환합니다.

이 함수는 나중에 readStringChunk()로 포인터를 전달할 수 있는 버퍼를 미리 할당하는 데 유용합니다.

readString(), readByteArray() 및 readStringChunk()도 참조하세요 .

QIODevice *QCborStreamReader::device() const

setDevice() 또는 QCborStreamReader 생성자를 사용하여 설정한 QIODevice 을 반환합니다. 이 객체가 QByteArray 에서 읽는 경우 이 함수는 대신 nullptr을 반환합니다.

setDevice()도 참조하세요 .

bool QCborStreamReader::enterContainer()

현재 항목인 배열 또는 맵을 입력하고 컨테이너에 포함된 요소를 반복할 준비를 합니다. 컨테이너 입력에 성공하면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다(일반적으로 구문 분석 오류). enterContainer()를 호출할 때마다 leaveContainer() 호출과 쌍을 이루어야 합니다.

이 함수는 현재 항목이 배열 또는 맵인 경우에만 호출할 수 있습니다(즉, isArray(), isMap() 또는 isContainer()가 참인 경우). 다른 조건에서 호출하면 오류가 발생합니다.

leaveContainer(), isContainer(), isArray() 및 isMap()도 참조하세요 .

[noexcept] bool QCborStreamReader::hasNext() const

현재 컨테이너에 디코딩해야 할 항목이 더 있으면 참을 반환하고, 컨테이너의 끝에 도달하면 거짓을 반환합니다. 루트 요소를 파싱하는 경우 hasNext()가 false를 반환하면 파싱이 완료되었음을 나타내며, 그렇지 않은 경우 컨테이너 깊이가 0이 아닌 경우 외부 코드에서 leaveContainer()를 호출해야 합니다.

parentContainerType(), containerDepth() 및 leaveContainer()도 참조하세요 .

bool QCborStreamReader::isArray() const

현재 요소의 유형이 배열인 경우(즉, type()가 QCborStreamReader::Array)를 반환하는 경우 참을 반환합니다. 이 함수가 참을 반환하면 enterContainer()를 호출하여 해당 컨테이너 구문 분석을 시작할 수 있습니다.

현재 요소가 배열인 경우 isLengthKnown()를 호출하여 배열의 크기가 CBOR 스트림에 명시되어 있는지 확인할 수도 있습니다. 명시되어 있으면 length()를 호출하여 해당 크기를 얻을 수 있습니다.

다음 예제는 보다 효율적인 디코딩을 위해 배열의 크기가 주어진 QVariantList 을 미리 할당합니다:

   QVariantList populateFromCbor(QCborStreamReader &reader)
   {
       QVariantList list;
       if (reader.isLengthKnown())
           list.reserve(reader.length());

       reader.enterContainer();
       while (reader.lastError() == QCborError::NoError && reader.hasNext())
           list.append(readOneElement(reader));
       if (reader.lastError() == QCborError::NoError)
           reader.leaveContainer();
   }

참고: 위의 코드는 길이가 합리적인 값인지 검증하지 않습니다. 입력 스트림에서 길이가 10억 개의 요소라고 보고하면 위의 함수는 약 16GB 이상의 RAM을 할당하려고 시도하므로 충돌이 발생할 수 있습니다.

type(), isMap(), isLengthKnown(), length(), enterContainer() 및 leaveContainer()도 참조하세요 .

bool QCborStreamReader::isBool() const

현재 요소가 부울 값(true 또는 false)이면 참을 반환하고, 그 외의 값이면 거짓을 반환합니다. 이 함수가 참을 반환하면 toBool()를 호출하여 부울 값을 검색할 수 있습니다. toSimpleType ()를 호출하여 QCborSimpleValue::True 또는 QCborSimpleValue::False와 비교할 수도 있습니다.

type(), isFalse(), isTrue(), toBool(), isSimpleType() 및 toSimpleType()도 참조하세요 .

bool QCborStreamReader::isByteArray() const

현재 요소의 유형이 바이트 배열인 경우(즉, type()가 QCborStreamReader::ByteArray)를 반환하는 경우 참을 반환합니다. 이 함수가 참을 반환하면 readByteArray()를 호출하여 해당 데이터를 읽을 수 있습니다.

type(), readByteArray() 및 isString()도 참조하세요 .

bool QCborStreamReader::isContainer() const

현재 요소가 컨테이너(즉, 배열 또는 맵)인 경우 참을 반환하고, 다른 요소인 경우 거짓을 반환합니다. 현재 요소가 컨테이너인 경우 isLengthKnown() 함수를 사용하여 스트림에 컨테이너의 크기가 명시되어 있는지 확인하고, 명시되어 있다면 length()를 사용하여 해당 크기를 가져올 수 있습니다.

더 중요한 것은 컨테이너의 경우 enterContainer() 함수를 사용하여 컨테이너에 포함된 요소에 대한 반복을 시작할 수 있다는 것입니다.

type(), isArray(), isMap(), isLengthKnown(), length(), enterContainer(), leaveContainer(), containerDepth()도 참조하세요 .

bool QCborStreamReader::isDouble() const

현재 요소의 유형이 IEEE 754 배정밀도 부동 소수점인 경우(즉, type()가 QCborStreamReader::Double)을 반환하는 경우 참을 반환합니다. 이 함수가 참을 반환하면 toDouble()를 호출하여 해당 데이터를 읽을 수 있습니다.

type(), toDouble(), isFloat16() 및 isFloat()도 참조하세요 .

bool QCborStreamReader::isFalse() const

현재 요소가 false 값이면 참을 반환하고, 다른 값이면 거짓을 반환합니다.

type(), isTrue(), isBool(), toBool(), isSimpleType() 및 toSimpleType()도 참조하세요 .

bool QCborStreamReader::isFloat16() const

현재 요소의 유형이 IEEE 754 반정밀도 부동 소수점인 경우(즉, type()가 QCborStreamReader::Float16)을 반환하는 경우 참을 반환합니다. 이 함수가 참을 반환하면 toFloat16()를 호출하여 해당 데이터를 읽을 수 있습니다.

type(), toFloat16(), isFloat() 및 isDouble()도 참조하세요 .

bool QCborStreamReader::isFloat() const

현재 요소의 유형이 IEEE 754 단정밀도 부동 소수점인 경우(즉, type()가 QCborStreamReader::Float)을 반환하는 경우 참을 반환합니다. 이 함수가 참을 반환하면 toFloat()를 호출하여 해당 데이터를 읽을 수 있습니다.

type(), toFloat(), isFloat16() 및 isDouble()도 참조하세요 .

bool QCborStreamReader::isInteger() const

현재 요소의 유형이 부호가 없는 정수이거나 음수인 경우(즉, type()가 QCborStreamReader::UnsignedInteger 또는 QCborStreamReader::NegativeInteger)를 반환하는 경우 참을 반환합니다. 이 함수가 참을 반환하면 toInteger()를 호출하여 해당 값을 읽을 수 있습니다.

type(), toInteger(), toUnsignedInteger(), toNegativeInteger(), isUnsignedInteger() 및 isNegativeInteger()도 참조하세요 .

bool QCborStreamReader::isInvalid() const

현재 요소가 유효하지 않은 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 디코딩 오류가 발생했거나 배열 또는 맵의 마지막 요소를 방금 구문 분석한 경우 현재 요소가 유효하지 않을 수 있습니다.

참고: 이 함수는 isNull()와 혼동하지 마세요. Null은 애플리케이션에서 처리해야 하는 일반적인 CBOR 유형입니다.

type() 및 isValid()도 참조하세요 .

[noexcept] bool QCborStreamReader::isLengthKnown() const

현재 배열, 맵, 바이트 배열 또는 문자열의 길이를 알면 참을 반환하고(CBOR 스트림에 명시되어 있음), 그렇지 않으면 거짓을 반환합니다. 이 함수는 요소가 이 중 하나에 해당하는 경우에만 호출해야 합니다.

길이가 알려진 경우 length()를 호출하여 얻을 수 있습니다.

맵이나 배열의 길이를 알 수 없는 경우 스트림에 존재하는 요소의 수로 길이가 암시됩니다. QCborStreamReader 에는 해당 조건에서 길이를 계산할 수 있는 API가 없습니다.

문자열과 바이트 배열도 길이가 불확정적일 수 있습니다(즉, 여러 개의 청크로 전송될 수 있음). 현재 QCborStreamWriter 으로는 만들 수 없지만 다른 인코더를 사용하면 만들 수 있으므로 QCborStreamReader 에서 이를 지원합니다.

length(), QCborStreamWriter::startArray(), QCborStreamWriter::startMap()도 참조하세요 .

bool QCborStreamReader::isMap() const

현재 요소의 유형이 맵인 경우(즉, type()가 QCborStreamReader::Map)을 반환하는 경우 참을 반환합니다. 이 함수가 참을 반환하면 enterContainer()를 호출하여 해당 컨테이너 구문 분석을 시작할 수 있습니다.

현재 요소가 맵인 경우 isLengthKnown()를 호출하여 맵의 크기가 CBOR 스트림에 명시되어 있는지 확인할 수도 있습니다. 명시되어 있는 경우 length()를 호출하여 해당 크기를 얻을 수 있습니다.

다음 예제는 보다 효율적인 디코딩을 위해 지도의 크기를 고려하여 QVariantMap 을 미리 할당합니다:

   QVariantMap populateFromCbor(QCborStreamReader &reader)
   {
       QVariantMap map;
       if (reader.isLengthKnown())
           map.reserve(reader.length());

       reader.enterContainer();
       while (reader.lastError() == QCborError::NoError && reader.hasNext()) {
           QString key = readElementAsString(reader);
           map.insert(key, readOneElement(reader));
       }
       if (reader.lastError() == QCborError::NoError)
           reader.leaveContainer();
   }

위의 예에서는 readElementAsString 라는 함수를 사용하여 맵의 키를 읽고 문자열을 얻습니다. 이는 CBOR 맵이 문자열뿐만 아니라 모든 유형을 키로 포함할 수 있기 때문입니다. 사용자 코드는 이 변환을 수행하거나 문자열이 아닌 키를 거부하거나 QVariantMapQVariantHash 이외의 다른 컨테이너를 사용해야 합니다. 예를 들어 맵에 정수 키가 포함될 것으로 예상되는 경우 스트림 크기와 구문 분석이 줄어들어 권장되는 올바른 컨테이너는 \l{QMap}<int, QVariant> 또는 \l{QHash}<int, QVariant> 입니다.

참고: 위의 코드는 길이가 적절한 값인지 검증하지 않습니다. 입력 스트림에서 길이가 10억 개의 요소라고 보고하면 위의 함수는 약 24GB 이상의 RAM을 할당하려고 시도하므로 충돌이 발생할 수 있습니다.

type(), isArray(), isLengthKnown(), length(), enterContainer() 및 leaveContainer()도 참조하세요 .

bool QCborStreamReader::isNegativeInteger() const

현재 요소의 유형이 음의 정수인 경우 참을 반환합니다(즉, type()가 QCborStreamReader::NegativeInteger)을 반환하는 경우). 이 함수가 참을 반환하면 toNegativeInteger() 또는 toInteger()를 호출하여 해당 값을 읽을 수 있습니다.

type(), toNegativeInteger(), toInteger(), isInteger() 및 isUnsignedInteger()도 참조하세요 .

bool QCborStreamReader::isNull() const

현재 요소가 null 값이면 참을 반환하고, 다른 값이면 거짓을 반환합니다. 일부 선택적 데이터가 없음을 나타내기 위해 Null 값을 사용할 수 있습니다.

참고: 이 함수는 isValid()와 반대되는 함수가 아닙니다. Null 값은 유효한 CBOR 값입니다.

type(), isSimpleType() 및 toSimpleType()도 참조하세요 .

bool QCborStreamReader::isSimpleType() const

현재 요소의 유형이 부울 값(참, 거짓)과 널 및 정의되지 않은 값을 포함한 모든 CBOR 단순 유형인 경우 참을 반환합니다. 어떤 단순 유형인지 확인하려면 toSimpleType()를 호출하세요. 또는 특정 단순 유형을 테스트하려면 QCborSimpleType 매개변수를 받는 오버로드를 호출하세요.

CBOR 단순 유형은 추가 값을 포함하지 않는 유형입니다. 255개의 가능성이 있지만 현재 정의된 의미를 가진 값은 4개뿐입니다. 코드는 알 수 없는 단순 유형에 대처할 것으로 예상되지 않으며 알 수 없는 유형을 발견하면 단순히 스트림을 유효하지 않은 것으로 버릴 수 있습니다.

QCborSimpleType, type(), isSimpleType(QCborSimpleType) 및 toSimpleType()도 참조하세요 .

bool QCborStreamReader::isSimpleType(QCborSimpleType st) const

st현재 요소의 유형이 단순 유형인 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 이 함수가 참을 반환하면 toSimpleType()는 st 을 반환합니다.

CBOR 단순 타입은 추가 값을 포함하지 않는 타입입니다. 255개의 가능성이 있지만 현재 정의된 의미를 가진 값은 4개뿐입니다. 코드는 알 수 없는 단순 타입을 처리할 것으로 예상되지 않으며, 알 수 없는 타입을 발견하면 단순히 스트림을 유효하지 않은 것으로 버릴 수 있습니다.

QCborSimpleType, type(), isSimpleType(), toSimpleType()도 참조하세요 .

bool QCborStreamReader::isString() const

현재 요소의 유형이 텍스트 문자열인 경우(즉, type()가 QCborStreamReader::String)를 반환하는 경우 참을 반환합니다. 이 함수가 참을 반환하면 readString()를 호출하여 해당 데이터를 읽을 수 있습니다.

type(), readString() 및 isByteArray()도 참조하세요 .

bool QCborStreamReader::isTag() const

현재 요소의 유형이 CBOR 태그인 경우(즉, type()가 QCborStreamReader::Tag)를 반환하는 경우 참을 반환합니다. 이 함수가 참을 반환하면 toTag()를 호출하여 해당 데이터를 읽을 수 있습니다.

type() 및 toTag()도 참조하세요 .

bool QCborStreamReader::isTrue() const

현재 요소가 true 값이면 참을 반환하고, 다른 값이면 거짓을 반환합니다.

type(), isFalse(), isBool(), toBool(), isSimpleType() 및 toSimpleType()도 참조하세요 .

bool QCborStreamReader::isUndefined() const

현재 요소가 undefined 값인 경우 참을 반환하고, 다른 값인 경우 거짓을 반환합니다. 정의되지 않은 값은 스트림을 만들 때 일부 변환이 실패했거나 불가능했음을 나타내기 위해 인코딩될 수 있습니다. QCborStreamReader 함수는 어떤 대체도 수행하지 않으며 스트림에 명시적으로 정의되지 않은 값이 포함된 경우에만 true를 반환합니다.

type(), isSimpleType() 및 toSimpleType()도 참조하세요 .

bool QCborStreamReader::isUnsignedInteger() const

현재 요소의 유형이 부호가 없는 정수인 경우 참을 반환합니다(즉, type()가 QCborStreamReader::UnsignedInteger)을 반환하는 경우). 이 함수가 참을 반환하면 toUnsignedInteger() 또는 toInteger()를 호출하여 해당 값을 읽을 수 있습니다.

type(), toUnsignedInteger(), toInteger(), isInteger() 및 isNegativeInteger()도 참조하세요 .

bool QCborStreamReader::isValid() const

현재 요소가 유효하면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 디코딩 오류가 발생했거나 배열 또는 맵의 마지막 요소를 방금 구문 분석한 경우 현재 요소가 유효하지 않을 수 있습니다.

참고: 이 함수는 isNull()와 반대되는 함수가 아닙니다. Null은 애플리케이션에서 처리해야 하는 일반적인 CBOR 유형입니다.

type() 및 isInvalid()도 참조하세요 .

QCborError QCborStreamReader::lastError() const

스트림을 디코딩할 때 발생한 마지막 오류(있는 경우)를 반환합니다. 오류가 발생하지 않은 경우 QCborError::NoError 를 반환합니다.

isValid()도 참조하세요 .

bool QCborStreamReader::leaveContainer()

처리 중이던 항목이 있는 배열이나 맵을 떠나 컨테이너 끝의 다음 항목에 디코더를 배치합니다. 컨테이너를 떠나는 데 성공하면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다(일반적으로 구문 분석 오류). enterContainer ()에 대한 각 호출은 leaveContainer()에 대한 호출과 쌍을 이루어야 합니다.

이 함수는 hasNext()가 false를 반환하고 containerDepth()가 0이 아닌 경우에만 호출할 수 있습니다. 다른 조건에서 호출하면 오류가 발생합니다.

enterContainer(), parentContainerType() 및 containerDepth()도 참조하세요 .

quint64 QCborStreamReader::length() const

문자열 또는 바이트 배열의 길이를 반환하거나 배열의 항목 수 또는 맵의 항목 쌍의 수를 알 수 있는 경우 그 수를 반환합니다. 길이를 알 수 없는 경우(즉, isLengthKnown()가 false를 반환한 경우) 이 함수를 호출해서는 안 됩니다. 그렇게 하면 오류가 발생하여 QCborStreamReader 이 입력 스트림 구문 분석을 중지하게 됩니다.

isLengthKnown(), QCborStreamWriter::startArray() 및 QCborStreamWriter::startMap()도 참조하세요 .

bool QCborStreamReader::next(int maxRecursion = 10000)

하나의 요소를 디코딩하는 CBOR 스트림을 전진시킵니다. 일반적으로 고정 폭 기본 요소(정수, 단순 값, 태그 및 부동 소수점 값)를 구문 분석할 때 이 함수를 호출해야 합니다. 그러나 현재 항목이 문자열, 배열 또는 맵인 경우에도 이 함수를 호출할 수 있으며 포함된 모든 요소를 포함하여 해당 요소 전체를 건너뜁니다.

이 함수는 전진에 성공하면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 스트림이 손상되었거나 불완전하거나 배열 및 맵의 중첩 수준이 maxRecursion 을 초과하는 경우 실패할 수 있습니다. hasNext ()가 false를 반환할 때 이 함수를 호출하는 것도 오류입니다. 이 함수가 false를 반환하면 lastError()는 실패 원인을 자세히 설명하는 오류 코드를 반환합니다.

lastError(), isValid() 및 hasNext()도 참조하세요 .

QCborStreamReader::Type QCborStreamReader::parentContainerType() const

현재 항목이 포함된 컨테이너가 배열인지 맵인지를 각각 나타내는 QCborStreamReader::Array 또는 QCborStreamReader::Map 을 반환합니다. 현재 루트 요소를 구문 분석 중인 경우 이 함수는 QCborStreamReader::Invalid 을 반환합니다.

containerDepth() 및 enterContainer()도 참조하세요 .

[since 6.7] QByteArray QCborStreamReader::readAllByteArray()

현재 바이트 문자열을 디코딩하여 반환합니다. 문자열이 청크인 경우, 이 함수는 모든 청크를 반복하여 연결합니다. 오류가 발생하면 이 함수는 기본적으로 구성된 QByteArray()를 반환하지만 특정 빈 바이트 문자열과 구별되지 않을 수 있습니다. 대신 lastError()를 확인하여 오류가 발생했는지 확인하세요.

이 함수는 정수나 문자열을 포함한 어떤 유형 변환도 수행하지 않습니다. 따라서 isByteArray()가 참인 경우에만 호출할 수 있으며 다른 조건에서 호출하면 오류가 발생합니다.

참고: 이 함수는 다시 시작할 수 없습니다. 즉, 이 함수는 소켓이나 파이프 등 CBOR 데이터를 계속 수신할 수 있는 상황에서는 사용해서는 안 됩니다. 전체 데이터가 이미 수신되어 QByteArray 또는 QIODevice 입력에서 사용할 수 있는 경우에만 사용해야 합니다.

이 함수는 Qt 6.7에 도입되었습니다.

readByteArray(), readStringChunk(), isByteArray() 및 readAllString()도 참조하세요 .

[since 6.7] QString QCborStreamReader::readAllString()

현재 텍스트 문자열을 디코딩하여 반환합니다. 문자열이 청크인 경우 이 함수는 모든 청크를 반복하여 연결합니다. 오류가 발생하면 이 함수는 기본적으로 구성된 QString()을 반환하지만 특정 빈 텍스트 문자열과 구별되지 않을 수 있습니다. 대신 lastError()를 확인하여 오류가 발생했는지 확인하세요.

이 함수는 정수나 바이트 배열을 포함한 어떤 유형 변환도 수행하지 않습니다. 따라서 isString()가 참을 반환하는 경우에만 호출할 수 있으며, 다른 조건에서 호출하면 오류가 발생합니다.

참고: 이 함수는 다시 시작할 수 없습니다. 즉, 이 함수는 소켓이나 파이프와 같이 CBOR 데이터를 계속 수신할 수 있는 상황에서 사용해서는 안 됩니다. 전체 데이터가 이미 수신되어 QByteArray 또는 QIODevice 입력에서 사용할 수 있는 경우에만 사용해야 합니다.

이 함수는 Qt 6.7에 도입되었습니다.

readString(), readStringChunk(), isString() 및 readAllByteArray()도 참조하세요 .

[since 6.7] QByteArray QCborStreamReader::readAllUtf8String()

현재 텍스트 문자열을 디코딩하여 반환합니다. 문자열이 청크인 경우 이 함수는 모든 청크를 반복하여 연결합니다. 오류가 발생하면 이 함수는 기본적으로 구성된 QString()을 반환하지만 특정 빈 텍스트 문자열과 구별되지 않을 수 있습니다. 대신 lastError()를 확인하여 오류가 발생했는지 확인하세요.

이 함수는 정수나 바이트 배열을 포함한 어떤 유형 변환도 수행하지 않습니다. 따라서 isString()가 참을 반환하는 경우에만 호출할 수 있으며, 다른 조건에서 호출하면 오류가 발생합니다.

참고: 이 함수는 다시 시작할 수 없습니다. 즉, 이 함수는 소켓이나 파이프와 같이 CBOR 데이터를 계속 수신할 수 있는 상황에서 사용해서는 안 됩니다. 전체 데이터가 이미 수신되어 QByteArray 또는 QIODevice 입력에서 사용할 수 있는 경우에만 사용해야 합니다.

이 함수는 Qt 6.7에 도입되었습니다.

readString(), readStringChunk(), isString() 및 readAllByteArray()도 참조하세요 .

[since 6.7] bool QCborStreamReader::readAndAppendToByteArray(QByteArray &dst)

현재 바이트 문자열을 디코딩하여 dst 에 추가합니다. 문자열이 청크인 경우 이 함수는 모든 청크를 반복하여 연결합니다. 디코딩 중에 오류가 발생하면 성공적으로 디코딩할 수 있는 다른 청크가 dst 에 기록될 수 있습니다. 오류 없이 디코딩이 완료되면 true, 그렇지 않으면 false 을 반환합니다.

이 함수는 정수나 문자열을 포함한 어떤 유형 변환도 수행하지 않습니다. 따라서 isByteArray()가 참인 경우에만 호출할 수 있으며, 다른 조건에서 호출하면 오류가 발생합니다.

참고: 이 함수는 다시 시작할 수 없습니다. 즉, 이 함수는 소켓이나 파이프 등 CBOR 데이터를 계속 수신할 수 있는 상황에서는 사용해서는 안 됩니다. 전체 데이터가 이미 수신되어 QByteArray 또는 QIODevice 입력에서 사용할 수 있는 경우에만 사용해야 합니다.

이 함수는 Qt 6.7에 도입되었습니다.

readByteArray(), readStringChunk(), isByteArray() 및 readAndAppendToString()도 참조하세요 .

[since 6.7] bool QCborStreamReader::readAndAppendToString(QString &dst)

현재 텍스트 문자열을 디코딩하여 dst 에 추가합니다. 문자열이 청크로 되어 있는 경우 이 함수는 모든 청크를 반복하여 연결합니다. 디코딩 중에 오류가 발생하면 성공적으로 디코딩할 수 있는 다른 청크가 dst 에 기록될 수 있습니다. 오류 없이 디코딩이 완료되면 true, 그렇지 않으면 false 을 반환합니다.

이 함수는 정수나 바이트 배열을 포함한 어떤 타입 변환도 수행하지 않습니다. 따라서 isString()가 참을 반환하는 경우에만 호출할 수 있으며, 다른 조건에서 호출하면 오류가 발생합니다.

참고: 이 함수는 다시 시작할 수 없습니다. 즉, 이 함수는 소켓이나 파이프와 같이 CBOR 데이터를 계속 수신할 수 있는 상황에서 사용해서는 안 됩니다. 전체 데이터가 이미 수신되어 QByteArray 또는 QIODevice 입력에서 사용할 수 있는 경우에만 사용해야 합니다.

이 함수는 Qt 6.7에 도입되었습니다.

readString(), readStringChunk(), isString() 및 readAndAppendToByteArray()도 참조하세요 .

[since 6.7] bool QCborStreamReader::readAndAppendToUtf8String(QByteArray &dst)

현재 텍스트 문자열을 디코딩하여 dst 에 추가합니다. 문자열이 청크로 되어 있는 경우 이 함수는 모든 청크를 반복하여 연결합니다. 디코딩 중에 오류가 발생하면 성공적으로 디코딩할 수 있는 다른 청크가 dst 에 기록될 수 있습니다. 오류 없이 디코딩이 완료되면 true, 그렇지 않으면 false 을 반환합니다.

이 함수는 정수나 바이트 배열을 포함한 어떤 타입 변환도 수행하지 않습니다. 따라서 isString()가 참을 반환하는 경우에만 호출할 수 있으며, 다른 조건에서 호출하면 오류가 발생합니다.

참고: 이 함수는 다시 시작할 수 없습니다. 즉, 이 함수는 소켓이나 파이프와 같이 CBOR 데이터를 계속 수신할 수 있는 상황에서 사용해서는 안 됩니다. 전체 데이터가 이미 수신되어 QByteArray 또는 QIODevice 입력에서 사용할 수 있는 경우에만 사용해야 합니다.

이 함수는 Qt 6.7에 도입되었습니다.

readString(), readStringChunk(), isString() 및 readAndAppendToByteArray()도 참조하세요 .

QCborStreamReader::StringResult<QByteArray> QCborStreamReader::readByteArray()

CBOR 문자열에서 1바이트 배열 청크를 디코딩하여 반환합니다. 이 함수는 일반 콘텐츠와 청크 콘텐츠 모두에 사용되므로 isLengthKnown()가 참인 경우에도 호출자는 항상 이 함수를 반복해서 호출해야 합니다. 이 함수의 일반적인 사용 예는 다음과 같습니다:

   QBytearray decodeBytearray(QCborStreamReader &reader)
   {
       QBytearray result;
       auto r = reader.readBytearray();
       while (r.status == QCborStreamReader::Ok) {
           result += r.data;
           r = reader.readByteArray();
       }

       if (r.status == QCborStreamReader::Error) {
           // handle error condition
           result.clear();
       }
       return result;
   }

readAllByteArray() 함수는 위의 루프와 몇 가지 추가 검사를 구현합니다.

이 함수는 정수나 문자열을 포함한 어떤 유형 변환도 수행하지 않습니다. 따라서 isByteArray()가 참인 경우에만 호출할 수 있으며 다른 조건에서 호출하면 오류가 발생합니다.

readAllByteArray(), readString(), isByteArray() 및 readStringChunk()도 참조하세요 .

QCborStreamReader::StringResult<QString> QCborStreamReader::readString()

CBOR 문자열에서 문자열 청크 하나를 디코딩하여 반환합니다. 이 함수는 일반 문자열과 청크 문자열 콘텐츠 모두에 사용되므로 isLengthKnown()가 참인 경우에도 호출자는 항상 이 함수를 반복해서 호출해야 합니다. 이 함수의 일반적인 사용법은 다음과 같습니다:

   QString decodeString(QCborStreamReader &reader)
   {
       QString result;
       auto r = reader.readString();
       while (r.status == QCborStreamReader::Ok) {
           result += r.data;
           r = reader.readString();
       }

       if (r.status == QCborStreamReader::Error) {
           // handle error condition
           result.clear();
       }
       return result;
   }

readAllString() 함수는 위의 루프와 몇 가지 추가 검사를 구현합니다.

이 함수는 정수나 바이트 배열을 포함한 어떤 유형 변환도 수행하지 않습니다. 따라서 isString()가 참을 반환하는 경우에만 호출할 수 있으며, 다른 조건에서 호출하면 오류가 발생합니다.

readAllString(), readByteArray(), isString() 및 readStringChunk()도 참조하세요 .

QCborStreamReader::StringResult<qsizetype> QCborStreamReader::readStringChunk(char *ptr, qsizetype maxlen)

크기가 maxlenptr 이 가리키는 버퍼로 현재 문자열 청크를 읽습니다. 이 함수는 \l StringResult::data 멤버에 저장된 ptr 에 복사된 바이트 수와 함께 StringResult 객체를 반환합니다. \l StringResult::status 멤버는 문자열을 읽는 데 오류가 있었는지, 데이터가 복사되었는지 또는 이것이 마지막 청크인지 여부를 나타냅니다.

이 함수는 StringByteArray 유형 모두에 대해 호출할 수 있습니다. 후자의 경우 이 함수는 readByteArray()가 반환했을 것과 동일한 데이터를 읽습니다. 문자열의 경우 QString 에 해당하는 UTF-8을 반환합니다.

이 함수는 일반적으로 currentStringChunkSize()와 함께 루프에서 사용됩니다. 예를 들어

    QCborStreamReader<qsizetype> result;
    do {
        qsizetype size = reader.currentStringChunkSize();
        qsizetype oldsize = buffer.size();
        buffer.resize(oldsize + size);
        result = reader.readStringChunk(buffer.data() + oldsize, size);
    } while (result.status() == QCborStreamReader::Ok);

readByteArray() 및 readString()와 달리 이 함수는 QByteArrayQString 의 구현 제한에 의해 제한되지 않습니다.

참고: 이 함수는 UTF-8 콘텐츠의 형식이 올바른지 확인하지 않습니다. 즉, 이 함수는 readString()에서도 QCborError::InvalidUtf8String 오류를 생성하지 않습니다.

currentStringChunkSize(), readString(), readByteArray(), isString() 및 isByteArray()도 참조하세요 .

[since 6.7] QCborStreamReader::StringResult<QByteArray> QCborStreamReader::readUtf8String()

CBOR 문자열에서 문자열 청크 하나를 디코딩하여 반환합니다. 이 함수는 일반 문자열과 청크 문자열 콘텐츠 모두에 사용되므로 isLengthKnown()가 참인 경우에도 호출자는 항상 이 함수를 반복해서 호출해야 합니다. 이 함수의 일반적인 사용 예는 readString()의 경우 다음과 같습니다:

   QString decodeString(QCborStreamReader &reader)
   {
       QString result;
       auto r = reader.readString();
       while (r.status == QCborStreamReader::Ok) {
           result += r.data;
           r = reader.readString();
       }

       if (r.status == QCborStreamReader::Error) {
           // handle error condition
           result.clear();
       }
       return result;
   }

readAllUtf8String() 함수는 위의 루프와 몇 가지 추가 검사를 구현합니다.

이 함수는 정수나 바이트 배열을 포함한 어떤 유형 변환도 수행하지 않습니다. 따라서 isString()가 참을 반환하는 경우에만 호출할 수 있으며, 다른 조건에서 호출하면 오류가 발생합니다.

이 함수는 Qt 6.7에 도입되었습니다.

readAllString(), readByteArray(), isString() 및 readStringChunk()도 참조하십시오 .

void QCborStreamReader::reparse()

현재 요소를 다시 구문 분석합니다. 이 함수는 CBOR 스트림이 끝나기 전에 입력 데이터의 끝에 도달하여 구문 분석에 실패한 후 QIODevice 소스에서 더 많은 데이터를 사용할 수 있게 되면 호출해야 합니다.

QByteArray()에서 읽을 때 addData() 함수는 이 함수를 자동으로 호출합니다. 읽기에 실패하지 않았을 때 이 함수를 호출하면 아무 작업도 수행되지 않습니다.

void QCborStreamReader::reset()

소스를 처음으로 재설정하고 디코더 상태를 지웁니다. 소스 데이터가 QByteArray 인 경우 QCborStreamReader 은 배열의 처음부터 다시 시작됩니다.

소스 데이터가 QIODevice 인 경우 이 함수는 QIODevice::reset()을 호출하여 바이트 위치 0을 찾습니다. CBOR 스트림이 장치의 시작 부분(예: 파일 시작 부분)에서 발견되지 않으면 이 함수는 잘못된 작업을 수행할 수 있습니다. 대신 QIODevice 을 오른쪽 오프셋에 배치하고 setDevice()을 호출하세요.

clear() 및 setDevice()도 참조하세요 .

void QCborStreamReader::setDevice(QIODevice *device)

데이터 소스를 device 로 설정하여 디코더를 초기 상태로 재설정합니다.

device()도 참조하세요 .

bool QCborStreamReader::toBool() const

현재 요소의 부울 값을 반환합니다.

이 함수는 정수를 포함한 어떠한 타입 변환도 수행하지 않습니다. 따라서 isTrue(), isFalse() 또는 isBool()가 참을 반환하는 경우에만 호출할 수 있으며, 다른 조건에서 호출하면 오류가 발생합니다.

isBool(), isTrue(), isFalse() 및 toInteger()도 참조하세요 .

double QCborStreamReader::toDouble() const

현재 요소의 64비트 배정밀도 부동 소수점 값을 반환합니다.

이 함수는 다른 부동 소수점 유형이나 정수 값 등 어떤 유형 변환도 수행하지 않습니다. 따라서 isDouble()가 참인 경우에만 호출할 수 있으며 다른 조건에서 호출하면 오류가 발생합니다.

isDouble(), toFloat16() 및 toFloat()도 참조하세요 .

qfloat16 QCborStreamReader::toFloat16() const

현재 요소의 16비트 반정밀도 부동 소수점 값을 반환합니다.

이 함수는 다른 부동소수점 유형이나 정수 값 등 어떤 유형 변환도 수행하지 않습니다. 따라서 isFloat16()가 참인 경우에만 호출할 수 있으며 다른 조건에서 호출하면 오류가 발생합니다.

isFloat16(), toFloat() 및 toDouble()도 참조하세요 .

float QCborStreamReader::toFloat() const

현재 요소의 32비트 단정밀도 부동 소수점 값을 반환합니다.

이 함수는 다른 부동 소수점 유형이나 정수 값 등 어떤 유형 변환도 수행하지 않습니다. 따라서 isFloat()가 참인 경우에만 호출할 수 있으며 다른 조건에서 호출하면 오류가 발생합니다.

isFloat(), toFloat16() 및 toDouble()도 참조하세요 .

qint64 QCborStreamReader::toInteger() const

현재 요소의 정수 값(음수, 양수 또는 0)을 반환합니다. 값이263 - 1보다 크거나 -263보다 작으면 반환되는 값이 오버플로되어 잘못된 부호를 갖게 됩니다. 이러한 값을 처리해야 하는 경우 toUnsignedInteger() 또는 toNegativeInteger()를 대신 사용하세요.

이 함수는 부울 또는 CBOR 태그를 포함하여 어떤 유형 변환도 수행하지 않습니다. 따라서 isInteger()가 참인 경우에만 호출할 수 있으며 다른 조건에서 호출하면 오류가 발생합니다.

isInteger(), toUnsignedInteger() 및 toNegativeInteger()도 참조하세요 .

QCborNegativeInteger QCborStreamReader::toNegativeInteger() const

현재 요소의 음의 정수 값을 반환합니다. QCborNegativeValue는 CBOR 스트림에 저장된 음수의 절대값을 포함하는 64비트 부호 없는 정수입니다. 또한 QCborNegativeValue(0)은 숫자 -264를 나타냅니다.

이 함수는 부울 또는 CBOR 태그를 포함하여 어떠한 유형 변환도 수행하지 않습니다. 따라서 isNegativeInteger()가 참인 경우에만 호출할 수 있으며, 다른 조건에서 호출하면 오류가 발생합니다.

이 함수는 toInteger()의 반환 유형 범위를 벗어나는 숫자를 구하는 데 사용할 수 있습니다. 그러나 -263보다 작은 음수를 사용하는 것은 매우 권장하지 않습니다.

type(), toInteger(), isNegativeInteger() 및 isUnsignedInteger()도 참조하세요 .

QCborSimpleType QCborStreamReader::toSimpleType() const

현재 단순 타입의 값을 반환합니다.

이 함수는 정수를 포함한 어떤 타입 변환도 수행하지 않습니다. 따라서 isSimpleType()가 참인 경우에만 호출할 수 있으며 다른 조건에서 호출하면 오류가 발생합니다.

isSimpleType(), isTrue(), isFalse(), isBool(), isNull() 및 isUndefined()도 참조하세요 .

QCborTag QCborStreamReader::toTag() const

현재 요소의 태그 값을 반환합니다.

이 함수는 정수를 포함하여 어떤 유형 변환도 수행하지 않습니다. 따라서 isTag()가 참인 경우에만 호출할 수 있으며 다른 조건에서 호출하면 오류가 발생합니다.

태그는 일반 CBOR 유형에 추가 의미를 부여하는 64비트 숫자입니다. 알려진 태그 목록은 QCborKnownTags 열거형을 참조하세요.

isTag(), toInteger() 및 QCborKnownTags도 참조하세요 .

quint64 QCborStreamReader::toUnsignedInteger() const

현재 요소의 부호 없는 정수 값을 반환합니다.

이 함수는 부울 또는 CBOR 태그를 포함하여 어떤 유형 변환도 수행하지 않습니다. 따라서 isUnsignedInteger()가 참인 경우에만 호출할 수 있으며, 다른 조건에서 호출하면 오류가 발생합니다.

이 함수는 toInteger()의 반환 유형 범위를 벗어난 숫자를 가져오는 데 사용할 수 있습니다.

type(), toInteger(), isUnsignedInteger() 및 isNegativeInteger()도 참조하세요 .

QCborStreamReader::Type QCborStreamReader::type() const

현재 요소의 유형을 반환합니다. 유효한 유형 중 하나이거나 유효하지 않습니다.

isValid(), isUnsignedInteger(), isNegativeInteger(), isInteger(), isByteArray(), isString(), isArray(), isMap(), isTag(), isSimpleType(), isBool(), isFalse(), isTrue(), isNull(), isUndefined(), isFloat16(), isFloat() 및 isDouble()도 참조하세요 .

© 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.