QCborStreamReader Class

Die Klasse QCborStreamReader ist ein einfacher CBOR-Stream-Decoder, der entweder mit QByteArray oder QIODevice arbeitet. Mehr...

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

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Typen

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

Öffentliche Funktionen

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

Detaillierte Beschreibung

Diese Klasse kann verwendet werden, um einen Strom von CBOR-Inhalten direkt von QByteArray oder QIODevice zu dekodieren. CBOR ist die Concise Binary Object Representation, eine sehr kompakte Form der Binärdatenkodierung, die mit JSON kompatibel ist. Es wurde von der IETF Constrained RESTful Environments (CoRE) WG entwickelt, die es in vielen neuen RFCs verwendet hat. Es ist dafür gedacht, neben dem CoAP-Protokoll verwendet zu werden.

QCborStreamReader bietet eine StAX-ähnliche API, ähnlich der von QXmlStreamReader. Ihre Verwendung erfordert ein wenig Wissen über die CBOR-Kodierung. Für eine einfachere API siehe QCborValue und insbesondere die Decodierungsfunktion QCborValue::fromCbor().

Normalerweise erstellt man einen QCborStreamReader, indem man die Quelle QByteArray oder QIODevice als Parameter an den Konstruktor übergibt und dann Elemente aus dem Stream ausliest, wenn es keine Fehler bei der Dekodierung gab. Es gibt drei Arten von CBOR-Typen:

ArtTypenVerhalten
Feste BreiteGanzzahlen, Tags, Einfache Typen, FließkommaDer Wert wird von QCborStreamReader vorparsed, daher sind die Zugriffsfunktionen const. Muss next() aufrufen, um weiterzukommen.
ZeichenkettenByte-Arrays, Text-StringsDie Länge (falls bekannt) wird voranalysiert, die Zeichenkette selbst jedoch nicht. Die Accessor-Funktionen sind nicht konstant und können Speicher zuweisen. Nach dem Aufruf gehen die Zugriffsfunktionen automatisch zum nächsten Element über.
BehältnisseArrays, KartenDie Länge (falls bekannt) wird vorparsed. Um auf die Elemente zuzugreifen, müssen Sie enterContainer() aufrufen, alle Elemente lesen und dann leaveContainer() aufrufen. Diese Funktion rückt zum nächsten Element vor.

Eine Prozessorfunktion sieht also in der Regel wie folgt aus:

   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-Unterstützung

In der folgenden Tabelle sind die CBOR-Funktionen aufgeführt, die QCborStreamReader unterstützt.

FunktionUnterstützung
Zahlen ohne VorzeichenJa (voller Bereich)
Negative ZahlenJa (gesamter Bereich)
Byte-ZeichenkettenJa
Text-ZeichenfolgenJa
Gekapselte ZeichenkettenJa
TagsJa (willkürlich)
Boolesche WerteJa
NullJa
UndefiniertJa
Beliebige einfache WerteJa
Halbgenaue Fließkommazahlen (16-Bit)Ja
Einfachpräzise Fließkommazahl (32-Bit)Ja
Doppeltgenaue Fließkommazahl (64-Bit)Ja
Unendliche Zahlen und NaN-GleitkommaJa
Arrays und Zuordnungen mit festgelegter LängeJa
Arrays und Zuordnungen unbestimmter LängeJa
Andere Schlüsseltypen als Strings und GanzzahlenJa (willkürlich)

Umgang mit ungültigen oder unvollständigen CBOR-Streams

QCborStreamReader ist in der Lage, fehlerhafte Eingaben selbständig zu erkennen. Die verwendete Bibliothek wurde ausgiebig gegen ungültige Eingaben jeglicher Art getestet und ist durchaus in der Lage, Fehler zu melden. Wenn ein Fehler erkannt wird, setzt QCborStreamReader lastError() auf einen Wert neben QCborError::NoError, der angibt, welche Situation erkannt wurde.

Die meisten Fehler, die von QCborStreamReader während des normalen Item-Parsing erkannt werden, sind nicht behebbar. Der Code, der QCborStreamReader verwendet, kann sich dafür entscheiden, die Daten zu verarbeiten, die ordnungsgemäß dekodiert wurden, oder er kann sich dafür entscheiden, die gesamten Daten zu verwerfen.

Der einzige behebbare Fehler ist QCborError::EndOfFile, der anzeigt, dass weitere Daten benötigt werden, um das Parsen abzuschließen. Diese Situation ist nützlich, wenn Daten aus einer asynchronen Quelle, wie einer Pipe (QProcess) oder einem Socket (QTcpSocket, QUdpSocket, QNetworkReply, etc.) gelesen werden. Wenn mehr Daten ankommen, muss der umgebende Code entweder addData() aufrufen, wenn er von einer QByteArray parst, oder reparse(), wenn er stattdessen direkt ein QIDO-Gerät liest, das nun mehr Daten zur Verfügung hat (siehe setDevice()).

Siehe auch QCborStreamWriter, QCborValue, QXmlStreamReader, Parsen und Anzeigen von CBOR-Daten, Serialisierungskonverter, und Speichern und Laden eines Spiels.

Dokumentation der Mitgliedstypen

enum QCborStreamReader::StringResultCode

Diese Aufzählung wird von readString() und readByteArray() zurückgegeben und dient dazu, den Status des Parsings anzuzeigen.

KonstanteWertBeschreibung
QCborStreamReader::EndOfString0Das Parsen der Zeichenkette ist abgeschlossen, es ist kein Fehler aufgetreten.
QCborStreamReader::Ok1Die Funktion hat Daten zurückgegeben; es ist kein Fehler aufgetreten.
QCborStreamReader::Error-1Das Parsen ist mit einem Fehler fehlgeschlagen.

enum QCborStreamReader::Type

Diese Aufzählung enthält alle möglichen CBOR-Typen, wie sie von QCborStreamReader dekodiert werden. CBOR hat 7 Haupttypen, plus eine Reihe von einfachen Typen, die keinen Wert tragen, und Fließkommawerte.

KonstanteWertBeschreibung
QCborStreamReader::UnsignedInteger0x00(Haupttyp 0) Wertebereich von 0 bis264 - 1 (18.446.744.073.709.551.616)
QCborStreamReader::NegativeInteger0x20(Haupttyp 1) Wertebereich von -1 bis -264 (-18.446.744.073.709.551.616)
QCborStreamReader::ByteArrayByteString(Haupttyp 2) Beliebige Binärdaten.
QCborStreamReader::ByteString0x40Ein Alias zu ByteArray.
QCborStreamReader::StringTextString(Haupttyp 3) Unicode-Text, der möglicherweise NULs enthält.
QCborStreamReader::TextString0x60Ein Alias für String
QCborStreamReader::Array0x80(Haupttyp 4) Array mit heterogenen Elementen.
QCborStreamReader::Map0xa0(Haupttyp 5) Karte/Wörterbuch mit heterogenen Elementen.
QCborStreamReader::Tag0xc0(Haupttyp 6) Zahlen, die den generischen CBOR-Elementen einen weiteren semantischen Wert verleihen. Siehe QCborTag für weitere Informationen.
QCborStreamReader::SimpleType0xe0(Haupttyp 7) Typen, die keinen weiteren Wert haben. Dazu gehören Boolesche Werte (wahr und falsch), null, undefiniert.
QCborStreamReader::Float16HalfFloatIEEE 754 halbpräzise Fließkommazahl (qfloat16).
QCborStreamReader::HalfFloat0xf9Ein Alias zu Float16.
QCborStreamReader::Float0xfaIEEE 754 Gleitkomma mit einfacher Genauigkeit (float).
QCborStreamReader::Double0xfbIEEE 754 doppelpräzises Fließkomma (double).
QCborStreamReader::Invalid0xffKein gültiger Typ, entweder aufgrund eines Parsing-Fehlers oder aufgrund des Erreichens des Endes eines Arrays oder einer Map.

Dokumentation der Mitgliedsfunktionen

QCborStreamReader::QCborStreamReader()

Erzeugt ein QCborStreamReader-Objekt ohne Quelldaten. Nach der Erstellung meldet QCborStreamReader einen Fehler beim Parsen.

Sie können weitere Daten hinzufügen, indem Sie addData() aufrufen oder ein anderes Quellgerät mit setDevice() festlegen.

Siehe auch addData() und isValid().

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

Dies ist eine überladene Funktion.

Erzeugt ein QCborStreamReader-Objekt, das den durch Lesen von device gefundenen CBOR-Stream analysiert. QCborStreamReader übernimmt nicht das Eigentum an device, so dass es gültig bleiben muss, bis dieses Objekt zerstört wird.

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

Dies ist eine überladene Funktion.

Erzeugt ein QCborStreamReader-Objekt, das den in data gefundenen CBOR-Stream parsen wird.

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

Dies ist eine überladene Funktion.

Erzeugt ein QCborStreamReader-Objekt mit len Bytes Daten, beginnend bei data. Der Zeiger muss gültig bleiben, bis QCborStreamReader zerstört wird.

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

Dies ist eine überladene Funktion.

Erzeugt ein QCborStreamReader-Objekt mit len Bytes Daten, beginnend bei data. Der Zeiger muss gültig bleiben, bis QCborStreamReader zerstört wird.

[noexcept] QCborStreamReader::~QCborStreamReader()

Zerstört dieses QCborStreamReader Objekt und gibt alle zugehörigen Ressourcen frei.

void QCborStreamReader::addData(const QByteArray &data)

Fügt data zum CBOR-Stream hinzu und repariert das aktuelle Element. Diese Funktion ist nützlich, wenn bei der Verarbeitung des Datenstroms bereits das Ende der Daten erreicht wurde, nun aber weitere Daten verfügbar sind.

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

Dies ist eine überladene Funktion.

Fügt len Bytes an Daten ab data zum CBOR-Stream hinzu und repariert das aktuelle Element. Diese Funktion ist nützlich, wenn bei der Verarbeitung des Datenstroms bereits das Ende der Daten erreicht wurde, nun aber weitere Daten verfügbar sind.

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

Dies ist eine überladene Funktion.

Fügt len Bytes an Daten ab data zum CBOR-Stream hinzu und repariert das aktuelle Element. Diese Funktion ist nützlich, wenn bei der Verarbeitung des Datenstroms bereits das Ende der Daten erreicht wurde, nun aber weitere Daten verfügbar sind.

void QCborStreamReader::clear()

Löscht den Decoderstatus und setzt die Eingangsquelldaten auf ein leeres Byte-Array zurück. Nachdem diese Funktion aufgerufen wurde, zeigt QCborStreamReader einen Fehler beim Parsen an.

Rufen Sie addData() auf, um weitere zu parsende Daten hinzuzufügen.

Siehe auch reset() und setDevice().

int QCborStreamReader::containerDepth() const

Gibt die Anzahl der Container zurück, die dieser Stream mit enterContainer() betreten, aber noch nicht verlassen hat.

Siehe auch enterContainer() und leaveContainer().

qint64 QCborStreamReader::currentOffset() const

Gibt den Offset im Eingabestrom des aktuell dekodierten Elements zurück. Der aktuelle Offset ist nur dann die Anzahl der bisher dekodierten Bytes, wenn es sich bei den Quelldaten um eine QByteArray oder eine QIODevice handelt, die zu Beginn der Dekodierung an ihrem Anfang stand.

Siehe auch reset(), clear(), und device().

qsizetype QCborStreamReader::currentStringChunkSize() const

Gibt die Größe des aktuellen Text- oder Byte-String-Chunks zurück. Enthält der CBOR-Stream eine Zeichenkette ohne Chunking (d. h. wenn isLengthKnown() true zurückgibt), gibt diese Funktion die Größe der gesamten Zeichenkette zurück, genau wie length().

Diese Funktion ist nützlich, um den Puffer vorzubelegen, dessen Zeiger später an readStringChunk() übergeben werden kann.

Siehe auch readString(), readByteArray(), und readStringChunk().

QIODevice *QCborStreamReader::device() const

Gibt die QIODevice zurück, die entweder mit setDevice() oder dem QCborStreamReader Konstruktor gesetzt wurde. Wenn dieses Objekt von einer QByteArray gelesen wurde, gibt diese Funktion stattdessen nullptr zurück.

Siehe auch setDevice().

bool QCborStreamReader::enterContainer()

Betritt das Array oder die Map, das/die das aktuelle Element ist, und bereitet die Iteration der im Container enthaltenen Elemente vor. Gibt true zurück, wenn die Eingabe des Containers erfolgreich war, andernfalls false (normalerweise ein Parsing-Fehler). Jeder Aufruf von enterContainer() muss mit einem Aufruf von leaveContainer() gepaart sein.

Diese Funktion darf nur aufgerufen werden, wenn das aktuelle Element ein Array oder eine Map ist (d. h. wenn isArray(), isMap() oder isContainer() true ist). Der Aufruf unter einer anderen Bedingung ist ein Fehler.

Siehe auch leaveContainer(), isContainer(), isArray(), und isMap().

[noexcept] bool QCborStreamReader::hasNext() const

Gibt true zurück, wenn im aktuellen Container noch weitere Elemente zu dekodieren sind, oder false, wenn das Ende des Containers erreicht ist. Wenn das Wurzelelement geparst wird, zeigt hasNext() mit false an, dass das Parsen abgeschlossen ist; andernfalls, wenn die Containertiefe ungleich Null ist, muss der äußere Code leaveContainer() aufrufen.

Siehe auch parentContainerType(), containerDepth(), und leaveContainer().

bool QCborStreamReader::isArray() const

Gibt true zurück, wenn der Typ des aktuellen Elements ein Array ist (das heißt, wenn type() QCborStreamReader::Array zurückgibt). Wenn diese Funktion true zurückgibt, können Sie enterContainer() aufrufen, um mit dem Parsen des Containers zu beginnen.

Wenn das aktuelle Element ein Array ist, können Sie auch isLengthKnown() aufrufen, um herauszufinden, ob die Größe des Arrays im CBOR-Stream explizit angegeben ist. Ist dies der Fall, kann diese Größe durch den Aufruf von length() ermittelt werden.

Im folgenden Beispiel wird ein QVariantList unter Angabe der Array-Größe für eine effizientere Dekodierung vorbesetzt:

   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();
   }

Hinweis: Der obige Code überprüft nicht, ob die Länge ein sinnvoller Wert ist. Wenn der Eingabestrom meldet, dass die Länge 1 Milliarde Elemente beträgt, wird die obige Funktion versuchen, 16 GB oder mehr RAM zuzuweisen, was zu einem Absturz führen kann.

Siehe auch type(), isMap(), isLengthKnown(), length(), enterContainer(), und leaveContainer().

bool QCborStreamReader::isBool() const

Gibt true zurück, wenn das aktuelle Element ein boolescher Wert ist (true oder false), false, wenn es etwas anderes ist. Wenn diese Funktion true zurückgibt, können Sie toBool() aufrufen, um den Wert des booleschen Wertes zu ermitteln. Sie können auch toSimpleType() aufrufen und entweder mit QCborSimpleValue::True oder QCborSimpleValue::False vergleichen.

Siehe auch type(), isFalse(), isTrue(), toBool(), isSimpleType(), und toSimpleType().

bool QCborStreamReader::isByteArray() const

Gibt true zurück, wenn der Typ des aktuellen Elements ein Byte-Array ist (das heißt, wenn type() QCborStreamReader::ByteArray zurückgibt). Wenn diese Funktion true zurückgibt, können Sie readByteArray() aufrufen, um diese Daten zu lesen.

Siehe auch type(), readByteArray(), und isString().

bool QCborStreamReader::isContainer() const

Gibt true zurück, wenn das aktuelle Element ein Container ist (d. h. ein Array oder eine Map), false, wenn es etwas anderes ist. Wenn das aktuelle Element ein Container ist, kann die Funktion isLengthKnown() verwendet werden, um herauszufinden, ob die Größe des Containers im Stream explizit angegeben ist, und wenn ja, kann length() verwendet werden, um diese Größe zu erhalten.

Noch wichtiger ist, dass für einen Container die Funktion enterContainer() zur Verfügung steht, um eine Iteration durch die darin enthaltenen Elemente zu beginnen.

Siehe auch type(), isArray(), isMap(), isLengthKnown(), length(), enterContainer(), leaveContainer(), und containerDepth().

bool QCborStreamReader::isDouble() const

Gibt true zurück, wenn der Typ des aktuellen Elements ein IEEE 754 double-precision floating point ist (d.h. wenn type() QCborStreamReader::Double zurückgibt). Wenn diese Funktion true zurückgibt, können Sie toDouble() aufrufen, um diese Daten zu lesen.

Siehe auch type(), toDouble(), isFloat16(), und isFloat().

bool QCborStreamReader::isFalse() const

Gibt true zurück, wenn das aktuelle Element der Wert false ist, false, wenn es etwas anderes ist.

Siehe auch type(), isTrue(), isBool(), toBool(), isSimpleType(), und toSimpleType().

bool QCborStreamReader::isFloat16() const

Gibt true zurück, wenn der Typ des aktuellen Elements ein IEEE 754 halbpräzises Fließkomma ist (d.h. wenn type() QCborStreamReader::Float16 zurückgibt). Wenn diese Funktion true zurückgibt, können Sie toFloat16() aufrufen, um diese Daten zu lesen.

Siehe auch type(), toFloat16(), isFloat(), und isDouble().

bool QCborStreamReader::isFloat() const

Gibt true zurück, wenn der Typ des aktuellen Elements ein IEEE 754 single-precision floating point ist (d.h. wenn type() QCborStreamReader::Float zurückgibt). Wenn diese Funktion true zurückgibt, können Sie toFloat() aufrufen, um diese Daten zu lesen.

Siehe auch type(), toFloat(), isFloat16(), und isDouble().

bool QCborStreamReader::isInteger() const

Gibt true zurück, wenn der Typ des aktuellen Elements entweder eine Ganzzahl ohne Vorzeichen oder eine negative Ganzzahl ist (d. h. wenn type() QCborStreamReader::UnsignedInteger oder QCborStreamReader::NegativeInteger zurückgibt). Wenn diese Funktion true zurückgibt, können Sie toInteger() aufrufen, um diesen Wert zu lesen.

Siehe auch type(), toInteger(), toUnsignedInteger(), toNegativeInteger(), isUnsignedInteger(), und isNegativeInteger().

bool QCborStreamReader::isInvalid() const

Gibt true zurück, wenn das aktuelle Element ungültig ist, andernfalls false. Das aktuelle Element kann ungültig sein, wenn ein Dekodierungsfehler aufgetreten ist oder wir gerade das letzte Element in einem Array oder einer Map geparst haben.

Hinweis: Diese Funktion ist nicht zu verwechseln mit isNull(). Null ist ein normaler CBOR-Typ, der von der Anwendung behandelt werden muss.

Siehe auch type() und isValid().

[noexcept] bool QCborStreamReader::isLengthKnown() const

Gibt true zurück, wenn die Länge des aktuellen Arrays, der Map, des Byte-Arrays oder des Strings bekannt ist (explizit im CBOR-Stream), andernfalls false. Diese Funktion sollte nur aufgerufen werden, wenn das Element eines der genannten ist.

Wenn die Länge bekannt ist, kann sie durch den Aufruf von length() ermittelt werden.

Wenn die Länge einer Map oder eines Arrays nicht bekannt ist, wird sie durch die Anzahl der im Stream vorhandenen Elemente impliziert. QCborStreamReader hat keine API, um die Länge in diesem Fall zu berechnen.

Strings und Byte-Arrays können auch eine unbestimmte Länge haben (d.h. sie können in mehreren Chunks übertragen werden). Diese können derzeit nicht mit QCborStreamWriter erstellt werden, aber sie könnten mit anderen Encodern erstellt werden, daher unterstützt QCborStreamReader sie.

Siehe auch length(), QCborStreamWriter::startArray(), und QCborStreamWriter::startMap().

bool QCborStreamReader::isMap() const

Gibt true zurück, wenn der Typ des aktuellen Elements eine Map ist (d. h. wenn type() QCborStreamReader::Map zurückgibt). Wenn diese Funktion true zurückgibt, können Sie enterContainer() aufrufen, um mit dem Parsen des Containers zu beginnen.

Wenn das aktuelle Element eine Map ist, können Sie auch isLengthKnown() aufrufen, um herauszufinden, ob die Größe der Map im CBOR-Stream explizit angegeben ist. Ist dies der Fall, kann diese Größe durch den Aufruf von length() ermittelt werden.

Im folgenden Beispiel wird eine QVariantMap unter Angabe der Größe der Karte für eine effizientere Dekodierung vorbesetzt:

   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();
   }

Das obige Beispiel verwendet eine Funktion namens readElementAsString, um die Schlüssel der Map zu lesen und eine Zeichenkette zu erhalten. Das liegt daran, dass CBOR-Maps jeden Typ als Schlüssel enthalten können, nicht nur Strings. Der Benutzercode muss entweder diese Konvertierung durchführen, Nicht-String-Schlüssel zurückweisen oder stattdessen einen anderen Container als QVariantMap und QVariantHash verwenden. Wenn die Map beispielsweise Integer-Schlüssel enthalten soll, was empfohlen wird, da es die Stream-Größe und das Parsing reduziert, wäre der richtige Container \l{QMap}<int, QVariant> oder \l{QHash}<int, QVariant>.

Hinweis: Der obige Code überprüft nicht, ob die Länge ein sinnvoller Wert ist. Wenn der Eingabestrom meldet, dass die Länge 1 Milliarde Elemente beträgt, wird die obige Funktion versuchen, etwa 24 GB oder mehr RAM zuzuweisen, was zu einem Absturz führen kann.

Siehe auch type(), isArray(), isLengthKnown(), length(), enterContainer(), und leaveContainer().

bool QCborStreamReader::isNegativeInteger() const

Gibt true zurück, wenn der Typ des aktuellen Elements eine negative Ganzzahl ist (d. h. wenn type() QCborStreamReader::NegativeInteger zurückgibt). Wenn diese Funktion true zurückgibt, können Sie toNegativeInteger() oder toInteger() aufrufen, um diesen Wert zu lesen.

Siehe auch type(), toNegativeInteger(), toInteger(), isInteger(), und isUnsignedInteger().

bool QCborStreamReader::isNull() const

Gibt true zurück, wenn das aktuelle Element der Wert null ist, false, wenn es etwas anderes ist. Nullwerte können verwendet werden, um das Fehlen einiger optionaler Daten anzuzeigen.

Hinweis: Diese Funktion ist nicht das Gegenteil von isValid(). Ein Null-Wert ist ein gültiger CBOR-Wert.

Siehe auch type(), isSimpleType(), und toSimpleType().

bool QCborStreamReader::isSimpleType() const

Gibt true zurück, wenn der Typ des aktuellen Elements ein beliebiger einfacher CBOR-Typ ist, einschließlich eines booleschen Wertes (true und false) sowie null und undefiniert. Um herauszufinden, um welchen einfachen Typ es sich handelt, rufen Sie toSimpleType() auf. Um auf einen bestimmten einfachen Typ zu testen, können Sie auch die Überladung aufrufen, die einen QCborSimpleType Parameter annimmt.

Einfache CBOR-Typen sind Typen, die keinen zusätzlichen Wert enthalten. Es gibt 255 Möglichkeiten, aber es gibt derzeit nur vier Werte, die eine definierte Bedeutung haben. Es wird nicht erwartet, dass der Code mit unbekannten einfachen Typen zurechtkommt, und er kann den Stream einfach als ungültig verwerfen, wenn er einen unbekannten Typ findet.

Siehe auch QCborSimpleType, type(), isSimpleType(QCborSimpleType), und toSimpleType().

bool QCborStreamReader::isSimpleType(QCborSimpleType st) const

Gibt true zurück, wenn der Typ des aktuellen Elements der einfache Typ st ist, andernfalls false. Wenn diese Funktion true zurückgibt, dann gibt toSimpleType() st zurück.

CBOR simple types sind Typen, die keinen zusätzlichen Wert enthalten. Es gibt 255 Möglichkeiten, aber es gibt derzeit nur vier Werte, die eine definierte Bedeutung haben. Es wird nicht erwartet, dass der Code mit unbekannten einfachen Typen zurechtkommt und kann den Stream einfach als ungültig verwerfen, wenn er einen unbekannten Typ findet.

Siehe auch QCborSimpleType, type(), isSimpleType(), und toSimpleType().

bool QCborStreamReader::isString() const

Gibt true zurück, wenn der Typ des aktuellen Elements ein Textstring ist (d. h. wenn type() QCborStreamReader::String zurückgibt). Wenn diese Funktion true zurückgibt, können Sie readString() aufrufen, um diese Daten zu lesen.

Siehe auch type(), readString(), und isByteArray().

bool QCborStreamReader::isTag() const

Gibt true zurück, wenn der Typ des aktuellen Elements ein CBOR-Tag ist (d. h. wenn type() QCborStreamReader::Tag zurückgibt). Wenn diese Funktion true zurückgibt, können Sie toTag() aufrufen, um diese Daten zu lesen.

Siehe auch type() und toTag().

bool QCborStreamReader::isTrue() const

Gibt true zurück, wenn das aktuelle Element der Wert true ist, false, wenn es etwas anderes ist.

Siehe auch type(), isFalse(), isBool(), toBool(), isSimpleType(), und toSimpleType().

bool QCborStreamReader::isUndefined() const

Gibt true zurück, wenn das aktuelle Element der Wert undefined ist, false, wenn es ein anderer Wert ist. Undefinierte Werte können kodiert werden, um anzuzeigen, dass eine Konvertierung fehlgeschlagen ist oder bei der Erstellung des Streams nicht möglich war. QCborStreamReader führt niemals eine Ersetzung durch und diese Funktion gibt nur true zurück, wenn der Stream einen explizit undefinierten Wert enthält.

Siehe auch type(), isSimpleType(), und toSimpleType().

bool QCborStreamReader::isUnsignedInteger() const

Gibt true zurück, wenn der Typ des aktuellen Elements eine Ganzzahl ohne Vorzeichen ist (d. h. wenn type() QCborStreamReader::UnsignedInteger zurückgibt). Wenn diese Funktion true zurückgibt, können Sie toUnsignedInteger() oder toInteger() aufrufen, um diesen Wert zu lesen.

Siehe auch type(), toUnsignedInteger(), toInteger(), isInteger(), und isNegativeInteger().

bool QCborStreamReader::isValid() const

Gibt true zurück, wenn das aktuelle Element gültig ist, andernfalls false. Das aktuelle Element kann ungültig sein, wenn ein Dekodierungsfehler aufgetreten ist oder wir gerade das letzte Element in einem Array oder einer Map geparst haben.

Hinweis: Diese Funktion ist nicht das Gegenteil von isNull(). Null ist ein normaler CBOR-Typ, der von der Anwendung behandelt werden muss.

Siehe auch type() und isInvalid().

QCborError QCborStreamReader::lastError() const

Gibt den letzten Fehler bei der Dekodierung des Streams zurück, falls vorhanden. Wenn kein Fehler aufgetreten ist, wird QCborError::NoError zurückgegeben.

Siehe auch isValid().

bool QCborStreamReader::leaveContainer()

Verlässt das Array oder die Map, dessen/deren Elemente verarbeitet wurden, und positioniert den Decoder auf das nächste Element nach dem Ende des Containers. Gibt true zurück, wenn das Verlassen des Containers erfolgreich war, andernfalls false (normalerweise ein Parsing-Fehler). Jeder Aufruf von enterContainer() muss mit einem Aufruf von leaveContainer() gepaart sein.

Diese Funktion darf nur aufgerufen werden, wenn hasNext() false zurückgegeben hat und containerDepth() nicht Null ist. Der Aufruf unter einer anderen Bedingung ist ein Fehler.

Siehe auch enterContainer(), parentContainerType(), und containerDepth().

quint64 QCborStreamReader::length() const

Gibt die Länge der Zeichenkette oder des Byte-Arrays zurück, oder die Anzahl der Elemente in einem Array oder die Anzahl der Elementpaare in einer Map, falls bekannt. Diese Funktion darf nicht aufgerufen werden, wenn die Länge unbekannt ist (d.h. wenn isLengthKnown() false zurückgegeben hat). Dies ist ein Fehler und führt dazu, dass QCborStreamReader das Parsen des Eingabestroms abbricht.

Siehe auch isLengthKnown(), QCborStreamWriter::startArray(), und QCborStreamWriter::startMap().

bool QCborStreamReader::next(int maxRecursion = 10000)

Die Dekodierung des CBOR-Streams um ein Element vorantreiben. Normalerweise sollten Sie diese Funktion aufrufen, wenn Sie Basiselemente mit fester Breite parsen (d.h. Ganzzahlen, einfache Werte, Tags und Fließkommazahlen). Diese Funktion kann aber auch aufgerufen werden, wenn das aktuelle Element eine Zeichenkette, ein Array oder eine Map ist, und sie überspringt das gesamte Element, einschließlich aller enthaltenen Elemente.

Diese Funktion gibt true zurück, wenn das Überspringen erfolgreich war, andernfalls false. Sie kann fehlschlagen, wenn der Stream beschädigt oder unvollständig ist oder wenn die Verschachtelungsebene von Arrays und Maps maxRecursion überschreitet. Der Aufruf dieser Funktion, wenn hasNext() false zurückgegeben hat, ist ebenfalls ein Fehler. Wenn diese Funktion false zurückgibt, gibt lastError() den Fehlercode zurück, der die Ursache des Fehlers angibt.

Siehe auch lastError(), isValid(), und hasNext().

QCborStreamReader::Type QCborStreamReader::parentContainerType() const

Gibt entweder QCborStreamReader::Array oder QCborStreamReader::Map zurück und zeigt damit an, ob der Container, der das aktuelle Element enthält, ein Array bzw. eine Map war. Wenn wir gerade das Wurzelelement parsen, gibt diese Funktion QCborStreamReader::Invalid zurück.

Siehe auch containerDepth() und enterContainer().

[since 6.7] QByteArray QCborStreamReader::readAllByteArray()

Dekodiert den aktuellen Byte-String und gibt ihn zurück. Ist der String in Chunks unterteilt, durchläuft diese Funktion alle Chunks und fügt sie zusammen. Wenn ein Fehler auftritt, gibt diese Funktion ein standardmäßig konstruiertes QByteArray() zurück, das aber möglicherweise nicht von bestimmten leeren Byte-Strings zu unterscheiden ist. Prüfen Sie stattdessen lastError(), um festzustellen, ob ein Fehler aufgetreten ist.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Integern oder von Strings. Sie darf daher nur aufgerufen werden, wenn isByteArray() wahr ist; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Hinweis: Diese Funktion kann nicht wiederaufgenommen werden. Das heißt, diese Funktion sollte nicht in Kontexten verwendet werden, in denen die CBOR-Daten noch empfangen werden können, zum Beispiel von einem Socket oder einer Pipe. Sie sollte nur verwendet werden, wenn die vollständigen Daten bereits empfangen wurden und in der Eingabe QByteArray oder QIODevice verfügbar sind.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch readByteArray(), readStringChunk(), isByteArray(), und readAllString().

[since 6.7] QString QCborStreamReader::readAllString()

Dekodiert die aktuelle Zeichenkette und gibt sie zurück. Ist die Zeichenkette in Chunks unterteilt, iteriert diese Funktion über alle Chunks und fügt sie zusammen. Wenn ein Fehler auftritt, gibt diese Funktion einen standardmäßig konstruierten QString() zurück, der aber möglicherweise nicht von bestimmten leeren Textstrings zu unterscheiden ist. Prüfen Sie stattdessen lastError(), um festzustellen, ob ein Fehler aufgetreten ist.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Ganzzahlen oder Byte-Arrays. Sie darf daher nur aufgerufen werden, wenn isString() true zurückgegeben hat; der Aufruf unter anderen Bedingungen ist ein Fehler.

Hinweis: Diese Funktion kann nicht wiederaufgenommen werden. Das heißt, diese Funktion sollte nicht in Kontexten verwendet werden, in denen die CBOR-Daten noch empfangen werden können, zum Beispiel von einem Socket oder einer Pipe. Sie sollte nur verwendet werden, wenn die vollständigen Daten bereits empfangen wurden und in der Eingabe QByteArray oder QIODevice verfügbar sind.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch readString(), readStringChunk(), isString(), und readAllByteArray().

[since 6.7] QByteArray QCborStreamReader::readAllUtf8String()

Dekodiert die aktuelle Zeichenkette und gibt sie zurück. Ist die Zeichenkette in Chunks unterteilt, iteriert diese Funktion über alle Chunks und fügt sie zusammen. Wenn ein Fehler auftritt, gibt diese Funktion einen standardmäßig konstruierten QString() zurück, der aber möglicherweise nicht von bestimmten leeren Textstrings zu unterscheiden ist. Prüfen Sie stattdessen lastError(), um festzustellen, ob ein Fehler aufgetreten ist.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Ganzzahlen oder Byte-Arrays. Sie darf daher nur aufgerufen werden, wenn isString() true zurückgegeben hat; der Aufruf unter anderen Bedingungen ist ein Fehler.

Hinweis: Diese Funktion kann nicht wiederaufgenommen werden. Das heißt, diese Funktion sollte nicht in Kontexten verwendet werden, in denen die CBOR-Daten noch empfangen werden können, zum Beispiel von einem Socket oder einer Pipe. Sie sollte nur verwendet werden, wenn die vollständigen Daten bereits empfangen wurden und in der Eingabe QByteArray oder QIODevice verfügbar sind.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch readString(), readStringChunk(), isString(), und readAllByteArray().

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

Dekodiert die aktuelle Byte-Zeichenkette und fügt sie an dst an. Wenn die Zeichenkette gechunked ist, durchläuft diese Funktion alle Chunks und fügt sie zusammen. Tritt während der Dekodierung ein Fehler auf, können andere Chunks, die erfolgreich dekodiert werden konnten, trotzdem in dst geschrieben worden sein. Gibt true zurück, wenn die Dekodierung ohne Fehler erfolgte, andernfalls false.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Integers oder von Strings. Sie darf daher nur aufgerufen werden, wenn isByteArray() wahr ist; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Hinweis: Diese Funktion kann nicht wiederaufgenommen werden. Das heißt, diese Funktion sollte nicht in Kontexten verwendet werden, in denen die CBOR-Daten noch empfangen werden können, zum Beispiel von einem Socket oder einer Pipe. Sie sollte nur verwendet werden, wenn die vollständigen Daten bereits empfangen wurden und in der Eingabe QByteArray oder QIODevice verfügbar sind.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch readByteArray(), readStringChunk(), isByteArray(), und readAndAppendToString().

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

Dekodiert die aktuelle Zeichenkette und fügt sie an dst an. Wenn die Zeichenkette gechunked ist, durchläuft diese Funktion alle Chunks und fügt sie zusammen. Tritt während der Dekodierung ein Fehler auf, können andere Chunks, die erfolgreich dekodiert werden konnten, trotzdem in dst geschrieben worden sein. Gibt true zurück, wenn die Dekodierung ohne Fehler erfolgte, andernfalls false.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Ganzzahlen oder von Byte-Arrays. Sie darf daher nur aufgerufen werden, wenn isString() true zurückgegeben hat; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Hinweis: Diese Funktion kann nicht wiederaufgenommen werden. Das heißt, diese Funktion sollte nicht in Kontexten verwendet werden, in denen die CBOR-Daten noch empfangen werden können, zum Beispiel von einem Socket oder einer Pipe. Sie sollte nur verwendet werden, wenn die vollständigen Daten bereits empfangen wurden und in der Eingabe QByteArray oder QIODevice verfügbar sind.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch readString(), readStringChunk(), isString(), und readAndAppendToByteArray().

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

Dekodiert die aktuelle Zeichenkette und fügt sie an dst an. Wenn die Zeichenkette gechunked ist, durchläuft diese Funktion alle Chunks und fügt sie zusammen. Tritt während der Dekodierung ein Fehler auf, können andere Chunks, die erfolgreich dekodiert werden konnten, trotzdem in dst geschrieben worden sein. Gibt true zurück, wenn die Dekodierung ohne Fehler erfolgte, andernfalls false.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Ganzzahlen oder von Byte-Arrays. Sie darf daher nur aufgerufen werden, wenn isString() true zurückgegeben hat; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Hinweis: Diese Funktion kann nicht wiederaufgenommen werden. Das heißt, diese Funktion sollte nicht in Kontexten verwendet werden, in denen die CBOR-Daten noch empfangen werden können, zum Beispiel von einem Socket oder einer Pipe. Sie sollte nur verwendet werden, wenn die vollständigen Daten bereits empfangen wurden und in der Eingabe QByteArray oder QIODevice verfügbar sind.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch readString(), readStringChunk(), isString(), und readAndAppendToByteArray().

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

Dekodiert einen Byte-Array-Chunk aus dem CBOR-String und gibt ihn zurück. Diese Funktion wird sowohl für reguläre als auch für gechunkte Inhalte verwendet, so dass der Aufrufer diese Funktion immer in einer Schleife aufrufen muss, auch wenn isLengthKnown() wahr ist. Die typische Verwendung dieser Funktion ist wie folgt:

   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;
   }

Die Funktion readAllByteArray() implementiert die obige Schleife und einige zusätzliche Überprüfungen.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Integern oder von Strings. Sie darf daher nur aufgerufen werden, wenn isByteArray() wahr ist; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Siehe auch readAllByteArray(), readString(), isByteArray(), und readStringChunk().

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

Dekodiert einen String-Chunk aus dem CBOR-String und gibt ihn zurück. Diese Funktion wird sowohl für reguläre als auch für gechunkte String-Inhalte verwendet, so dass der Aufrufer diese Funktion immer in einer Schleife aufrufen muss, auch wenn isLengthKnown() wahr ist. Die typische Verwendung dieser Funktion ist wie folgt:

   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;
   }

Die Funktion readAllString() implementiert die obige Schleife und einige zusätzliche Überprüfungen.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Ganzzahlen oder von Byte-Arrays. Sie darf daher nur aufgerufen werden, wenn isString() true zurückgegeben hat; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Siehe auch readAllString(), readByteArray(), isString(), und readStringChunk().

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

Liest den aktuellen String-Chunk in den Puffer, auf den ptr zeigt, dessen Größe maxlen ist. Diese Funktion gibt ein Objekt StringResult zurück, wobei die Anzahl der in ptr kopierten Bytes im Mitglied \l StringResult::data gespeichert ist. Der Member \l StringResult::status zeigt an, ob ein Fehler beim Lesen der Zeichenkette aufgetreten ist, ob Daten kopiert wurden oder ob dies der letzte Chunk war.

Diese Funktion kann sowohl für die Typen String als auch ByteArray aufgerufen werden. Für letztere liest diese Funktion die gleichen Daten, die readByteArray() zurückgegeben hätte. Bei Zeichenketten gibt sie das UTF-8-Äquivalent des QString zurück, das zurückgegeben worden wäre.

Diese Funktion wird normalerweise zusammen mit currentStringChunkSize() in einer Schleife verwendet. Ein Beispiel:

    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);

Im Gegensatz zu readByteArray() und readString() ist diese Funktion nicht durch die Implementierungsgrenzen von QByteArray und QString eingeschränkt.

Hinweis: Diese Funktion überprüft nicht, ob die UTF-8-Inhalte richtig formatiert sind. Das bedeutet, dass diese Funktion nicht den Fehler QCborError::InvalidUtf8String erzeugt, auch wenn readString() dies tut.

Siehe auch currentStringChunkSize(), readString(), readByteArray(), isString(), und isByteArray().

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

Dekodiert einen String-Chunk aus dem CBOR-String und gibt ihn zurück. Diese Funktion wird sowohl für reguläre als auch für gechunkte String-Inhalte verwendet, so dass der Aufrufer immer eine Schleife durchlaufen muss, um diese Funktion aufzurufen, auch wenn isLengthKnown() wahr ist. Die typische Verwendung dieser Funktion ist die gleiche wie für readString() im Folgenden:

   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;
   }

Die Funktion readAllUtf8String() implementiert die obige Schleife und einige zusätzliche Überprüfungen.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Ganzzahlen oder von Byte-Arrays. Daher darf sie nur aufgerufen werden, wenn isString() true zurückgegeben hat; der Aufruf unter jeder anderen Bedingung ist ein Fehler.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch readAllString(), readByteArray(), isString(), und readStringChunk().

void QCborStreamReader::reparse()

Repariert das aktuelle Element. Diese Funktion muss aufgerufen werden, wenn weitere Daten in der Quelle QIODevice verfügbar werden, nachdem das Parsen fehlgeschlagen ist, weil das Ende der Eingabedaten vor dem Ende des CBOR-Streams erreicht wurde.

Beim Lesen aus QByteArray() ruft die Funktion addData() automatisch diese Funktion auf. Der Aufruf dieser Funktion, wenn das Lesen nicht fehlgeschlagen ist, ist ein No-op.

void QCborStreamReader::reset()

Setzt die Quelle auf den Anfang zurück und löscht den Decoderstatus. Handelt es sich bei den Quelldaten um QByteArray, so beginnt QCborStreamReader am Anfang des Arrays neu.

Handelt es sich bei den Quelldaten um QIODevice, ruft diese Funktion QIODevice::reset() auf, die an der Byte-Position 0 ansetzt. Wenn der CBOR-Stream nicht am Anfang des Geräts gefunden wird (z. B. am Anfang einer Datei), dann wird diese Funktion wahrscheinlich das Falsche tun. Positionieren Sie stattdessen QIODevice auf den richtigen Offset und rufen Sie setDevice() auf.

Siehe auch clear() und setDevice().

void QCborStreamReader::setDevice(QIODevice *device)

Setzt die Datenquelle auf device und setzt den Decoder in seinen Ausgangszustand zurück.

Siehe auch device().

bool QCborStreamReader::toBool() const

Gibt den booleschen Wert des aktuellen Elements zurück.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Integer. Sie darf daher nur aufgerufen werden, wenn isTrue(), isFalse() oder isBool() den Wert true zurückgegeben haben; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Siehe auch isBool(), isTrue(), isFalse(), und toInteger().

double QCborStreamReader::toDouble() const

Gibt den 64-Bit-Doppelpräzisions-Gleitkommawert des aktuellen Elements zurück.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von anderen Fließkommatypen oder von Ganzzahlwerten. Sie darf daher nur aufgerufen werden, wenn isDouble() wahr ist; der Aufruf unter einer anderen Bedingung ist ein Fehler.

Siehe auch isDouble(), toFloat16(), und toFloat().

qfloat16 QCborStreamReader::toFloat16() const

Gibt den 16-Bit-Gleitkommawert mit halber Genauigkeit des aktuellen Elements zurück.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von anderen Fließkommatypen oder von Ganzzahlwerten. Sie darf daher nur aufgerufen werden, wenn isFloat16() wahr ist; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Siehe auch isFloat16(), toFloat(), und toDouble().

float QCborStreamReader::toFloat() const

Gibt den 32-Bit-Gleitkommawert des aktuellen Elements zurück.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von anderen Fließkommatypen oder von Ganzzahlwerten. Sie darf daher nur aufgerufen werden, wenn isFloat() wahr ist; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Siehe auch isFloat(), toFloat16(), und toDouble().

qint64 QCborStreamReader::toInteger() const

Gibt den ganzzahligen Wert des aktuellen Elements zurück, sei er negativ, positiv oder Null. Wenn der Wert größer als263 - 1 oder kleiner als -263 ist, wird der zurückgegebene Wert überlaufen und ein falsches Vorzeichen haben. Wenn diese Werte behandelt werden müssen, verwenden Sie stattdessen toUnsignedInteger() oder toNegativeInteger().

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von booleschen oder CBOR-Tags. Sie darf daher nur aufgerufen werden, wenn isInteger() wahr ist; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Siehe auch isInteger(), toUnsignedInteger(), und toNegativeInteger().

QCborNegativeInteger QCborStreamReader::toNegativeInteger() const

Gibt den negativen Integer-Wert des aktuellen Elements zurück. QCborNegativeValue ist eine 64-Bit-Ganzzahl ohne Vorzeichen, die den absoluten Wert der negativen Zahl enthält, die im CBOR-Stream gespeichert wurde. Zusätzlich stellt QCborNegativeValue(0) die Zahl -264 dar.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von booleschen oder CBOR-Tags. Sie darf daher nur aufgerufen werden, wenn isNegativeInteger() wahr ist; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Diese Funktion kann verwendet werden, um Zahlen zu erhalten, die außerhalb des Bereichs des Rückgabetyps von toInteger() liegen. Von der Verwendung negativer Zahlen kleiner als -263 wird jedoch dringend abgeraten.

Siehe auch type(), toInteger(), isNegativeInteger(), und isUnsignedInteger().

QCborSimpleType QCborStreamReader::toSimpleType() const

Gibt den Wert des aktuellen einfachen Typs zurück.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Integer. Sie darf daher nur aufgerufen werden, wenn isSimpleType() wahr ist; ein Aufruf unter anderen Bedingungen ist ein Fehler.

Siehe auch isSimpleType(), isTrue(), isFalse(), isBool(), isNull(), und isUndefined().

QCborTag QCborStreamReader::toTag() const

Gibt den Tag-Wert des aktuellen Elements zurück.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von Integer. Sie darf daher nur aufgerufen werden, wenn isTag() wahr ist; der Aufruf unter einer anderen Bedingung ist ein Fehler.

Tags sind 64-Bit-Nummern, die an generische CBOR-Typen angehängt sind und ihnen weitere Bedeutung verleihen. Eine Liste der bekannten Tags finden Sie in der Aufzählung QCborKnownTags.

Siehe auch isTag(), toInteger(), und QCborKnownTags.

quint64 QCborStreamReader::toUnsignedInteger() const

Gibt den vorzeichenlosen Ganzzahlwert des aktuellen Elements zurück.

Diese Funktion führt keine Typkonvertierungen durch, auch nicht von booleschen oder CBOR-Tags. Sie darf daher nur aufgerufen werden, wenn isUnsignedInteger() wahr ist; ein Aufruf unter einer anderen Bedingung ist ein Fehler.

Diese Funktion kann verwendet werden, um Zahlen zu erhalten, die außerhalb des Bereichs des Rückgabetyps von toInteger() liegen.

Siehe auch type(), toInteger(), isUnsignedInteger(), und isNegativeInteger().

QCborStreamReader::Type QCborStreamReader::type() const

Gibt den Typ des aktuellen Elements zurück. Es ist einer der gültigen Typen oder ungültig.

Siehe auch isValid(), isUnsignedInteger(), isNegativeInteger(), isInteger(), isByteArray(), isString(), isArray(), isMap(), isTag(), isSimpleType(), isBool(), isFalse(), isTrue(), isNull(), isUndefined(), isFloat16(), isFloat(), und 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.