QStringDecoder Class
Die Klasse QStringDecoder bietet einen zustandsbasierten Decoder für Text. Mehr...
| Kopfzeile: | #include <QStringDecoder> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Vererbt: | QStringConverter |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QStringDecoder ist Teil von Classes for string data.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Typen
Öffentliche Funktionen
| QStringDecoder() | |
| QStringDecoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default) | |
| QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default) | |
| QChar * | appendToBuffer(QChar *out, QByteArrayView in) |
(since 6.6) char16_t * | appendToBuffer(char16_t *out, QByteArrayView in) |
| QStringDecoder::EncodedData<QByteArrayView> | decode(QByteArrayView ba) |
| QStringDecoder::EncodedData<const QByteArray &> | decode(const QByteArray &ba) |
(since 6.11) QStringDecoder::FinalizeResult | finalize() |
(since 6.11) QStringDecoder::FinalizeResultQChar | finalize(QChar *out, qsizetype maxlen) |
(since 6.11) QStringDecoder::FinalizeResult | finalize(char16_t *out, qsizetype maxlen) |
| qsizetype | requiredSpace(qsizetype inputLength) const |
| QStringDecoder::EncodedData<QByteArrayView> | operator()(QByteArrayView ba) |
| QStringDecoder::EncodedData<const QByteArray &> | operator()(const QByteArray &ba) |
Statische öffentliche Mitglieder
| QStringDecoder | decoderForHtml(QByteArrayView data) |
Detaillierte Beschreibung
Ein Textdecoder konvertiert Text in einem kodierten Textformat, das eine bestimmte Kodierung verwendet, in die interne Darstellung von Qt.
Die Konvertierung kodierter Daten in eine QString kann mit dem folgenden Code erreicht werden:
QByteArray encodedString = "..."; auto toUtf16 = QStringDecoder(QStringDecoder::Utf8); QString string = toUtf16(encodedString);
Der Decoder merkt sich jeden Zustand, der zwischen den Aufrufen benötigt wird, so dass die Konvertierung von Daten, die in Stücken empfangen werden, z.B. wenn sie über ein Netzwerk empfangen werden, genauso einfach ist, indem der Decoder immer dann aufgerufen wird, wenn neue Daten verfügbar sind:
auto toUtf16 = QStringDecoder(QStringDecoder::Utf8); QString string; while (new_data_available() && !toUtf16.hasError()) { QByteArray chunk = get_new_data(); string += toUtf16(chunk); } auto result = toUtf16.finalize(); if (result.error != QStringDecoder::FinalizeResult::Error::NoError) { // Handle error }
Das QStringDecoder-Objekt behält den Zustand zwischen den Chunks bei und arbeitet daher auch dann korrekt, wenn Chunks in der Mitte einer Multi-Byte-Zeichenfolge aufgeteilt werden.
QStringDecoder-Objekte können aufgrund ihres internen Zustands nicht kopiert werden, aber sie können verschoben werden.
Siehe auch QStringConverter und QStringEncoder.
Dokumentation der Mitgliedstypen
[alias] QStringDecoder::FinalizeResult
Dies ist ein Alias für QStringConverter::FinalizeResultChar<char16_t>.
[alias] QStringDecoder::FinalizeResultQChar
Dies ist ein Alias für QStringConverter::FinalizeResultChar<QChar>.
Dokumentation der Mitgliedsfunktionen
[constexpr noexcept] QStringDecoder::QStringDecoder()
Standard konstruiert einen Decoder. Der Standarddecoder ist nicht gültig und kann nicht für die Konvertierung von Text verwendet werden.
[explicit] QStringDecoder::QStringDecoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
Erzeugt ein Decoder-Objekt unter Verwendung von name und flags. Wenn name nicht der Name einer bekannten Kodierung ist, wird ein ungültiger Konverter erzeugt.
Hinweis: In Qt-Versionen vor 6.8 nahm diese Funktion nur ein const char * entgegen, von dem erwartet wurde, dass es UTF-8-kodiert ist.
Siehe auch isValid().
[explicit constexpr] QStringDecoder::QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
Erzeugt ein Decoder-Objekt unter Verwendung von encoding und flags.
QChar *QStringDecoder::appendToBuffer(QChar *out, QByteArrayView in)
Dekodiert die von in betrachtete Bytefolge und schreibt das dekodierte Ergebnis in den Puffer, beginnend bei out. Gibt einen Zeiger auf das Ende der geschriebenen Daten zurück.
out muss groß genug sein, um alle dekodierten Daten aufnehmen zu können. Verwenden Sie requiredSpace, um die maximal erforderliche Größe für die Dekodierung eines kodierten Datenpuffers von in.size() Bytes zu bestimmen. Diese Funktion kann in alle Bytes zwischen out und out + requiredSpace() schreiben, einschließlich derjenigen, die hinter dem zurückgegebenen Endzeiger liegen.
Siehe auch requiredSpace.
[since 6.6] char16_t *QStringDecoder::appendToBuffer(char16_t *out, QByteArrayView in)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.6 eingeführt.
[static] QStringDecoder QStringDecoder::decoderForHtml(QByteArrayView data)
Versucht, die Kodierung des HTML in data zu bestimmen, indem er führende Byte-Order-Marken oder einen Charset-Spezifikator im HTML-Meta-Tag betrachtet und einen QStringDecoder zurückgibt, der der Kodierung entspricht. Wenn der zurückgegebene Decoder nicht gültig ist, wird die angegebene Kodierung von QStringConverter nicht unterstützt. Wenn keine Kodierung erkannt wird, gibt die Methode einen Decoder für Utf8 zurück.
Siehe auch isValid().
[since 6.11] QStringDecoder::FinalizeResultQChar QStringDecoder::finalize(QChar *out, qsizetype maxlen)
[since 6.11] QStringDecoder::FinalizeResult QStringDecoder::finalize(char16_t *out, qsizetype maxlen)
[since 6.11] QStringDecoder::FinalizeResult QStringDecoder::finalize()
Signalisiert dem Decoder, dass keine weiteren Daten ankommen werden.
Kann auch Daten aus Restinhalten liefern, die noch nicht dekodiert wurden. Wenn keine Restdaten zu berücksichtigen sind, wird das Feld error in der Rückgabe auf NoError gesetzt.
Wenn out geliefert wird und nicht leer ist, muss es Platz haben, in den bis zu maxlen Zeichen geschrieben werden können. In diesen Raum werden bis zu dieser Anzahl von Zeichen der Restausgabe geschrieben, wobei das Ende durch das Feld next des Rückgabewerts angezeigt wird. In der Regel bestehen diese Restdaten aus einem Ersatzzeichen pro verbleibendem, nicht umgewandeltem Eingabezeichen.
Wenn der gesamte Restinhalt über out geliefert wurde, wenn out nullptr ist oder wenn keine Restdaten vorhanden sind, wird der Decoder bei der Rückkehr von finalize() zurückgesetzt. Andernfalls können die restlichen Daten durch einen weiteren Aufruf von finalize() abgerufen oder verworfen werden.
Diese Funktionen wurden in Qt 6.11 eingeführt.
Siehe auch hasError() und appendToBuffer().
qsizetype QStringDecoder::requiredSpace(qsizetype inputLength) const
Gibt die maximale Anzahl von UTF-16-Codeeinheiten zurück, die für die Verarbeitung von inputLength kodierten Daten erforderlich sind.
Siehe auch appendToBuffer.
QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::operator()(const QByteArray &ba)
QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::decode(const QByteArray &ba)
QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::operator()(QByteArrayView ba)
QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::decode(QByteArrayView ba)
Konvertiert ba und gibt eine Struktur zurück, die implizit in QString konvertierbar ist.
QByteArray encodedString = "..."; auto toUtf16 = QStringDecoder(QStringDecoder::Utf8); auto data = toUtf16(encodedString); // data's type is QStringDecoder::EncodedData<const QByteArray &> QString string = toUtf16(encodedString); // Implicit conversion to QString // Here you have to cast "data" to QString auto func = [&]() { return !toUtf16.hasError() ? QString(data) : u"foo"_s; };
© 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.