이 페이지에서

QCborStreamReader Class

QCborStreamReader 클래스는 간단한 CBOR 스트림 디코더로, QByteArray 또는 QIODevice 에서 작동합니다. 더 보기...

헤더: #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(const QCborStreamReader &)
~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
QCborStreamReader &operator=(const QCborStreamReader &)

상세 설명

이 클래스는 QByteArray 또는 QIODevice 에서 CBOR 콘텐츠 스트림을 직접 디코딩하는 데 사용할 수 있습니다. CBOR는 Concise Binary Object Representation의 약자로, JSON과 호환되는 매우 간결한 형태의 이진 데이터 인코딩 방식입니다. 이 형식은 IETF Constrained RESTful Environments(CoRE) WG에서 개발되었으며, 많은 새로운 RFC에서 사용되고 있습니다. 이 형식은 CoAP 프로토콜과 함께 사용하도록 설계되었습니다.

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

일반적으로 생성자에 소스 QByteArray 또는 QIODevice 를 매개변수로 전달하여 QCborStreamReader를 생성한 후, 디코딩에 오류가 없으면 스트림에서 요소를 하나씩 추출합니다. CBOR 유형에는 다음 세 가지가 있습니다:

종류유형동작
고정 폭정수, 태그, 단순형, 부동 소수점값은 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 기능을 나열합니다.

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

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

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

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

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

또한 QCborStreamWriter, QCborValue, QXmlStreamReader, CBOR 데이터 구문 분석 및 표시, 직렬화 변환기, 게임 저장 및 불러오기를참조하십시오 .

멤버 유형 문서

enum QCborStreamReader::StringResultCode

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

상수값설명
QCborStreamReader::EndOfString0문자열에 대한 구문 분석이 오류 없이 완료되었습니다.
QCborStreamReader::Ok1함수가 데이터를 반환했으며 오류가 발생하지 않았습니다.
QCborStreamReader::Error-1오류로 인해 구문 분석에 실패했습니다.

enum QCborStreamReader::Type

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

상수값설명
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::ByteString0x40ByteArray의 별칭입니다.
QCborStreamReader::StringTextString(주요 유형 3) NUL을 포함할 수도 있는 유니코드 텍스트.
QCborStreamReader::TextString0x60String의 별칭
QCborStreamReader::Array0x80(주요 유형 4) 이종 항목의 배열.
QCborStreamReader::Map0xa0(주요 유형 5) 이종 항목의 맵/사전.
QCborStreamReader::Tag0xc0(주요 유형 6) 일반 CBOR 항목에 추가적인 의미적 값을 부여하는 숫자. 자세한 내용은 QCborTag 를 참조하십시오.
QCborStreamReader::SimpleType0xe0(주요 유형 7) 추가적인 값을 포함하지 않는 유형. 부울(true 및 false), null, undefined가 포함됩니다.
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가 소멸될 때까지 유효한 상태를 유지해야 합니다.

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

[delete] QCborStreamReader::QCborStreamReader(const 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()

현재 항목인 배열이나 맵에 진입하여 컨테이너에 포함된 요소를 반복 처리할 준비를 합니다. 컨테이너 진입에 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다(대개 구문 분석 오류). enterContainer()를 호출할 때마다 반드시 leaveContainer() 호출과 함께 사용해야 합니다.

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

leaveContainer(), isContainer(), isArray() 및 isMap()도 참조하십시오 .

[noexcept] bool QCborStreamReader::hasNext() const

현재 컨테이너에 디코딩할 항목이 더 있으면 true를 반환하고, 끝까지 도달한 경우 false를 반환합니다. 루트 요소를 파싱 중인 경우, hasNext()가 false를 반환하면 파싱이 완료된 것을 의미합니다. 그렇지 않고 컨테이너의 깊이가 0이 아닌 경우, 상위 코드에서 leaveContainer()를 호출해야 합니다.

parentContainerType(), containerDepth() 및 leaveContainer()도 참조하십시오 .

bool QCborStreamReader::isArray() const

현재 요소의 유형이 배열인 경우(즉, ` type()`가 ` QCborStreamReader::Array`를 반환하는 경우) `true`를 반환합니다. 이 함수가 `true`를 반환하면 ` 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();

    return list;
}

참고: 위의코드는 길이가 타당한 값인지 검증하지 않습니다. 입력 스트림에서 길이가 10억 개 요소라고 보고하는 경우, 위의 함수는 16GB 이상의 RAM을 할당하려고 시도할 것이며, 이로 인해 시스템이 중단될 수 있습니다.

type(), isMap(), isLengthKnown(), length(), enterContainer(), leaveContainer()도 참조하십시오 .

bool QCborStreamReader::isBool() const

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

type(), isFalse(), isTrue(), toBool(), isSimpleType(), toSimpleType()도 참조하십시오 .

bool QCborStreamReader::isByteArray() const

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

type(), readByteArray(), isString()도 참조하십시오 .

bool QCborStreamReader::isContainer() const

현재 요소가 컨테이너(즉, 배열이나 맵)인 경우 true를 반환하고, 그 외의 경우 false를 반환합니다. 현재 요소가 컨테이너인 경우, ` isLengthKnown()` 함수를 사용하여 스트림 내에서 해당 컨테이너의 크기가 명시적으로 지정되어 있는지 확인할 수 있으며, 명시적으로 지정되어 있다면 ` length()`를 사용하여 그 크기를 얻을 수 있습니다.

더 중요한 점은, 컨테이너의 경우 enterContainer() 함수를 사용하여 해당 컨테이너에 포함된 요소들을 순회할 수 있다는 것입니다.

또한 type(), isArray(), isMap(), isLengthKnown(), length(), enterContainer(), leaveContainer() 및 containerDepth()도 참조하십시오 .

bool QCborStreamReader::isDouble() const

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

type(), toDouble(), isFloat16(), isFloat()도 참조하십시오 .

bool QCborStreamReader::isFalse() const

현재 요소가 false 값인 경우 true를 반환하고, 그 외의 값인 경우 false를 반환합니다.

type(), isTrue(), isBool(), toBool(), isSimpleType() 및 toSimpleType()도 참조하십시오 .

bool QCborStreamReader::isFloat16() const

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

type(), toFloat16(), isFloat() 및 isDouble()도 참조하십시오 .

bool QCborStreamReader::isFloat() const

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

type(), toFloat(), isFloat16() 및 isDouble()도 참조하십시오 .

bool QCborStreamReader::isInteger() const

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

type(), toInteger(), toUnsignedInteger(), toNegativeInteger(), isUnsignedInteger(), isNegativeInteger()도 참조하십시오 .

bool QCborStreamReader::isInvalid() const

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

참고: 이 함수는 isNull()과 혼동해서는 안 됩니다. null은 일반적인 CBOR 유형이므로 애플리케이션에서 처리해야 합니다.

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

[noexcept] bool QCborStreamReader::isLengthKnown() const

현재 배열, 맵, 바이트 배열 또는 문자열의 길이가 알려진 경우(CBOR 스트림에 명시적으로 지정된 경우) true를 반환하고, 그렇지 않은 경우 false를 반환합니다. 이 함수는 해당 요소가 위 항목 중 하나인 경우에만 호출해야 합니다.

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

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

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

length(), QCborStreamWriter::startArray(), QCborStreamWriter::startMap()도 참조하십시오 .

bool QCborStreamReader::isMap() const

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

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

다음 예제는 더 효율적인 디코딩을 위해 맵의 크기를 기반으로 QVariantMap 를 미리 할당합니다:

QVariantMap populateFromCbor(QCborStreamReader &reader)
{
    QVariantMap map;
    if (reader.isLengthKnown())
        map = setMapLength(map, 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();

    return map;
}

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

참고: 위의코드는 길이가 타당한 값인지 검증하지 않습니다. 입력 스트림에서 길이가 10억 개 요소라고 보고하면, 위의 함수는 약 24GB 이상의 RAM을 할당하려고 시도하게 되며, 이로 인해 시스템이 중단될 수 있습니다.

type(), isArray(), isLengthKnown(), length(), enterContainer(), leaveContainer()도 참조하십시오 .

bool QCborStreamReader::isNegativeInteger() const

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

type(), toNegativeInteger(), toInteger(), isInteger() 및 isUnsignedInteger()도 참조하십시오 .

bool QCborStreamReader::isNull() const

현재 요소가 ` null ` 값이면 `true`를 반환하고, 그 외의 값이면 `false`를 반환합니다. 선택적 데이터가 없는 경우를 나타내기 위해 `Null` 값을 사용할 수 있습니다.

참고: 이 함수는 ` isValid()`의 반대 기능이 아닙니다. Null 값은 유효한 CBOR 값입니다.

참조: type(), isSimpleType(), toSimpleType().

bool QCborStreamReader::isSimpleType() const

현재 요소의 유형이 부울 값(true 및 false)은 물론 null 및 undefined를 포함한 CBOR 단순 유형 중 하나인 경우 true를 반환합니다. 이 요소가 어떤 단순 유형인지 확인하려면 ` toSimpleType()`를 호출하십시오. 또는 특정 단순 유형을 검사하려면 ` QCborSimpleType ` 매개변수를 받는 오버로드 메서드를 호출하십시오.

CBOR 단순 유형은 추가적인 값을 포함하지 않는 유형입니다. 총 255가지 가능성이 있지만, 현재 정의된 의미를 가진 값은 네 가지뿐입니다. 코드는 알 수 없는 단순 유형을 처리할 것으로 기대되지 않으며, 알 수 없는 유형을 발견하면 해당 스트림을 유효하지 않은 것으로 간주하여 무시할 수 있습니다.

QCborSimpleType, type(), isSimpleType(QCborSimpleType), toSimpleType()도 참조하십시오 .

bool QCborStreamReader::isSimpleType(QCborSimpleType st) const

현재 요소의 유형이 단순 유형 st 인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다. 이 함수가 true를 반환하면, ` toSimpleType()`는 ` st`를 반환합니다.

CBOR 단순 유형은 추가적인 값을 포함하지 않는 유형입니다. 총 255가지 가능성이 있지만, 현재 정의된 의미를 가진 값은 네 가지뿐입니다. 코드는 알려지지 않은 단순 유형을 처리할 필요가 없으며, 알려지지 않은 유형을 발견하면 해당 스트림을 유효하지 않은 것으로 간주하여 단순히 무시할 수 있습니다.

QCborSimpleType, type(), isSimpleType(), toSimpleType()도 참조하십시오 .

bool QCborStreamReader::isString() const

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

type(), readString(), isByteArray()도 참조하십시오 .

bool QCborStreamReader::isTag() const

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

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

bool QCborStreamReader::isTrue() const

현재 요소가 true 값인 경우 true를 반환하고, 그 외의 값인 경우 false를 반환합니다.

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

bool QCborStreamReader::isUndefined() const

현재 요소가 ‘ undefined ’ 값이면 true를 반환하고, 그 외의 값이면 false를 반환합니다. 정의되지 않은 값은 스트림 생성 시 일부 변환이 실패했거나 변환이 불가능했음을 나타내기 위해 인코딩될 수 있습니다. QCborStreamReader 는 절대 값을 대체하지 않으며, 이 함수는 스트림에 명시적인 정의되지 않은 값이 포함된 경우에만 true를 반환합니다.

type(), isSimpleType(), toSimpleType()도 참조하십시오 .

bool QCborStreamReader::isUnsignedInteger() const

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

type(), toUnsignedInteger(), toInteger(), isInteger() 및 isNegativeInteger()도 참조하십시오 .

bool QCborStreamReader::isValid() const

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

참고: 이 함수는 isNull()의 반대 기능이 아닙니다. null은 일반적인 CBOR 유형이므로 애플리케이션에서 처리해야 합니다.

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

QCborError QCborStreamReader::lastError() const

스트림 디코딩 과정에서 발생한 마지막 오류가 있는 경우 해당 오류를 반환합니다. 오류가 발생하지 않은 경우, 이 메서드는 ` QCborError::NoError`를 반환합니다.

isValid()도 참조하십시오 .

bool QCborStreamReader::leaveContainer()

처리 중이던 항목이 포함된 배열이나 맵을 벗어나, 컨테이너 끝 다음의 항목으로 디코더의 위치를 이동시킵니다. 컨테이너를 벗어나는 데 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다(대개 구문 분석 오류입니다). 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 스트림 디코딩을 한 요소만큼 진행합니다. 일반적으로 고정 폭 기본 요소(즉, 정수, 단순 값, 태그 및 부동 소수점 값)를 파싱할 때 이 함수를 호출해야 합니다. 하지만 현재 항목이 문자열, 배열 또는 맵인 경우에도 이 함수를 호출할 수 있으며, 이 경우 포함된 모든 요소를 포함하여 해당 요소 전체를 건너뜁니다.

이 함수는 이동에 성공하면 true를, 그렇지 않으면 false를 반환합니다. 스트림이 손상되었거나 불완전하거나, 배열 및 맵의 중첩 수준이 ` 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()이 true인 경우에만 호출할 수 있으며, 그 외의 조건에서 호출하는 것은 오류입니다.

참고: 이 함수는 재개할 수 없습니다. 즉, 소켓이나 파이프 등을 통해 CBOR 데이터가 여전히 수신될 수 있는 상황에서는 이 함수를 사용해서는 안 됩니다. 이 함수는 전체 데이터가 이미 수신되어 입력 QByteArray 또는 QIODevice 에 준비된 경우에만 사용해야 합니다.

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

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

[since 6.7] QString QCborStreamReader::readAllString()

현재 텍스트 문자열을 디코딩하여 반환합니다. 문자열이 청크로 나뉘어 있는 경우, 이 함수는 모든 청크를 순회하여 이를 연결합니다. 오류가 발생하면 이 함수는 기본 생성된 QString()을 반환하지만, 이는 특정 빈 텍스트 문자열과 구별되지 않을 수 있습니다. 대신, lastError()을 확인하여 오류 발생 여부를 판단해야 합니다.

이 함수는 정수나 바이트 배열을 포함한 어떠한 유형 변환도 수행하지 않습니다. 따라서 isString()가 true를 반환한 경우에만 호출할 수 있으며, 그 외의 조건에서 호출하는 것은 오류입니다.

참고: 이 함수는 재개할 수 없습니다. 즉, 소켓이나 파이프 등을 통해 CBOR 데이터가 여전히 수신될 수 있는 상황에서는 이 함수를 사용해서는 안 됩니다. 이 함수는 전체 데이터가 이미 수신되어 입력 매개변수 QByteArray 또는 QIODevice 에 준비된 경우에만 사용해야 합니다.

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

readString(), readStringChunk(), isString(), readAllByteArray()도 참조하십시오 .

[since 6.7] QByteArray QCborStreamReader::readAllUtf8String()

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

이 함수는 정수나 바이트 배열을 포함한 어떠한 유형 변환도 수행하지 않습니다. 따라서 isString()이 true를 반환한 경우에만 호출할 수 있으며, 그 외의 조건에서 호출하는 것은 오류입니다.

참고: 이 함수는 재개할 수 없습니다. 즉, 소켓이나 파이프 등을 통해 CBOR 데이터가 여전히 수신될 수 있는 상황에서는 이 함수를 사용해서는 안 됩니다. 이 함수는 전체 데이터가 이미 수신되어 입력 매개변수 QByteArray 또는 QIODevice 에 존재하는 경우에만 사용해야 합니다.

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

readString(), readStringChunk(), isString() 및 readAllByteArray()도 참조하십시오 .

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

현재 바이트 문자열을 디코딩하여 ` dst`에 추가합니다. 문자열이 청크로 나뉘어 있는 경우, 이 함수는 모든 청크를 순차적으로 처리하여 연결합니다. 디코딩 중에 오류가 발생하더라도, 성공적으로 디코딩된 다른 청크들은 여전히 ` dst `에 기록되었을 수 있습니다. 디코딩이 오류 없이 완료되면 ` true `를 반환하고, 그렇지 않은 경우 ` false `를 반환합니다.

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

참고: 이 함수는 재개할 수 없습니다. 즉, 소켓이나 파이프 등을 통해 CBOR 데이터가 여전히 수신될 수 있는 상황에서는 이 함수를 사용해서는 안 됩니다. 이 함수는 전체 데이터가 이미 수신되어 입력 매개변수 QByteArray 또는 QIODevice 에 준비된 경우에만 사용해야 합니다.

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

readByteArray(), readStringChunk(), isByteArray(), readAndAppendToString()도 참조하십시오 .

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

현재 텍스트 문자열을 디코딩하여 ` dst`에 추가합니다. 문자열이 청크로 나뉘어 있는 경우, 이 함수는 모든 청크를 순회하며 이를 연결합니다. 디코딩 중에 오류가 발생하더라도, 성공적으로 디코딩된 다른 청크들은 ` dst `에 이미 기록되었을 수 있습니다. 디코딩이 오류 없이 완료되면 ` true `을 반환하고, 그렇지 않으면 ` false `을 반환합니다.

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

참고: 이 함수는 재개할 수 없습니다. 즉, 소켓이나 파이프 등을 통해 CBOR 데이터가 여전히 수신될 수 있는 상황에서는 이 함수를 사용해서는 안 됩니다. 이 함수는 전체 데이터가 이미 수신되어 입력 매개변수 QByteArray 또는 QIODevice 에 준비된 경우에만 사용해야 합니다.

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

readString(), readStringChunk(), isString(), readAndAppendToByteArray()도 참조하십시오 .

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

현재 텍스트 문자열을 디코딩하여 ` dst`에 추가합니다. 문자열이 청크로 나뉘어 있는 경우, 이 함수는 모든 청크를 순차적으로 처리하여 연결합니다. 디코딩 중에 오류가 발생하더라도, 성공적으로 디코딩된 다른 청크들은 여전히 ` dst `에 기록되었을 수 있습니다. 디코딩이 오류 없이 완료되면 ` true `를 반환하고, 그렇지 않으면 ` false `를 반환합니다.

이 함수는 정수나 바이트 배열을 포함한 어떠한 유형 변환도 수행하지 않습니다. 따라서 isString()가 true를 반환한 경우에만 호출할 수 있으며, 그 외의 조건에서 호출하는 것은 오류입니다.

참고: 이 함수는 재개할 수 없습니다. 즉, 소켓이나 파이프 등을 통해 CBOR 데이터가 여전히 수신될 수 있는 상황에서는 이 함수를 사용해서는 안 됩니다. 이 함수는 전체 데이터가 이미 수신되어 입력 매개변수 QByteArray 또는 QIODevice 에 준비된 경우에만 사용해야 합니다.

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

readString(), readStringChunk(), isString() 및 readAndAppendToByteArray()도 참조하십시오 .

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

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

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()가 true인 경우에만 호출할 수 있으며, 그 외의 조건에서 호출하면 오류가 발생합니다.

readAllByteArray(), readString(), isByteArray(), readStringChunk()도 참조하십시오 .

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

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

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()이 true를 반환한 경우에만 호출할 수 있으며, 그 외의 조건에서 호출하는 것은 오류입니다.

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

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

ptr 가 가리키는 버퍼(크기는 maxlen)에 현재 문자열 청크를 읽어옵니다. 이 함수는 StringResult 객체를 반환하며, ptr 로 복사된 바이트 수는 \l StringResult::data 멤버에 저장됩니다. \l StringResult::status 멤버는 문자열 읽기 중 오류가 발생했는지, 데이터가 복사되었는지, 아니면 이것이 마지막 청크였는지를 나타냅니다.

이 함수는 String 및 ByteArray 유형 모두에 대해 호출할 수 있습니다. 후자의 경우, 이 함수는 readByteArray()이 반환했을 데이터와 동일한 데이터를 읽습니다. 문자열의 경우, 이 함수는 QString 가 반환했을 값의 UTF-8 등가값을 반환합니다.

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

QCborStreamReader::StringResult<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()과 달리, 이 함수는 QByteArray 및 QString 의 구현상의 제한을 받지 않습니다.

참고: 이 함수는 UTF-8 콘텐츠의 형식이 올바른지 검증하지 않습니다. 즉, readString()이 QCborError::InvalidUtf8String 오류를 발생시키더라도 이 함수는 해당 오류를 발생시키지 않습니다.

currentStringChunkSize(), readString(), readByteArray(), isString(), isByteArray()도 참조하십시오 .

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

CBOR 문자열에서 하나의 문자열 청크를 디코딩하여 반환합니다. 이 함수는 일반 문자열 내용과 청크로 나뉜 문자열 내용 모두에 사용되므로, 호출자는 isLengthKnown()이 true인 경우에도 항상 이 함수를 반복적으로 호출해야 합니다. 이 함수의 일반적인 사용법은 다음과 같이 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()이 true를 반환한 경우에만 호출할 수 있으며, 그 외의 조건에서 호출하면 오류가 발생합니다.

이 함수는 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()가 true를 반환한 경우에만 호출할 수 있으며, 그 외의 조건에서 호출하면 오류가 발생합니다.

isBool(), isTrue(), isFalse() 및 toInteger()도 참조하십시오 .

double QCborStreamReader::toDouble() const

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

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

isDouble(), toFloat16(), toFloat()도 참조하십시오 .

qfloat16 QCborStreamReader::toFloat16() const

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

이 함수는 다른 부동 소수점 유형이나 정수 값을 포함한 어떠한 유형 변환도 수행하지 않습니다. 따라서 isFloat16()이 참일 때만 호출할 수 있으며, 그 외의 조건에서 호출하면 오류가 발생합니다.

isFloat16(), toFloat(), toDouble()도 참조하십시오 .

float QCborStreamReader::toFloat() const

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

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

isFloat(), toFloat16(), toDouble()도 참조하십시오 .

qint64 QCborStreamReader::toInteger() const

현재 요소의 정수 값을 반환합니다. 이 값은 음수, 양수 또는 0일 수 있습니다. 값이263 - 1보다 크거나-263보다 작은 경우, 반환된 값은 오버플로우가 발생하여 부호가 잘못 표시될 수 있습니다. 이러한 값을 처리해야 하는 경우, 대신 toUnsignedInteger() 또는 toNegativeInteger()을 사용하십시오.

이 함수는 부울(boolean) 또는 CBOR 태그를 포함한 어떠한 형 변환도 수행하지 않습니다. 따라서 isInteger()이 true일 때만 호출할 수 있으며, 그 외의 조건에서 호출하면 오류가 발생합니다.

isInteger(), toUnsignedInteger(), toNegativeInteger()도 참조하십시오 .

QCborNegativeInteger QCborStreamReader::toNegativeInteger() const

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

이 함수는 부울(boolean) 또는 CBOR 태그를 포함한 어떠한 형 변환도 수행하지 않습니다. 따라서 isNegativeInteger()의 결과가 true일 때만 호출할 수 있으며, 그 외의 조건에서 호출하면 오류가 발생합니다.

이 함수는 toInteger()의 반환 유형 범위를 벗어난 숫자를 얻기 위해 사용될 수 있습니다. 그러나-263보다 작은 음수를 사용하는 것은 극히 권장되지 않습니다.

type(), toInteger(), isNegativeInteger(), isUnsignedInteger()도 참조하십시오 .

QCborSimpleType QCborStreamReader::toSimpleType() const

현재 단순 유형의 값을 반환합니다.

이 함수는 정수형으로부터의 변환을 포함하여 어떠한 형 변환도 수행하지 않습니다. 따라서 isSimpleType()이 true인 경우에만 호출할 수 있으며, 그 외의 조건에서 호출하면 오류가 발생합니다.

isSimpleType(), isTrue(), isFalse(), isBool(), isNull(), isUndefined()도 참조하십시오 .

QCborTag QCborStreamReader::toTag() const

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

이 함수는 정수형에서 변환하는 것을 포함하여 어떠한 형 변환도 수행하지 않습니다. 따라서 isTag()이 true인 경우에만 호출할 수 있으며, 그 외의 조건에서 호출하면 오류가 발생합니다.

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

isTag(), toInteger() 및 QCborKnownTags도 참조하십시오 .

quint64 QCborStreamReader::toUnsignedInteger() const

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

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

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

type(), toInteger(), isUnsignedInteger() 및 isNegativeInteger()도 참조하십시오 .

QCborStreamReader::Type QCborStreamReader::type() const

현재 요소의 유형을 반환합니다. 반환 값은 유효한 유형 중 하나이거나 ‘Invalid’입니다.

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

[delete] QCborStreamReader &QCborStreamReader::operator=(const QCborStreamReader &)

other 를 이 QCborStreamReader 인스턴스에 복사-할당합니다. 이 함수는 삭제되었습니다.

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