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 |
Vererbungen: | QStringConverter |
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Ö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) |
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()) { QByteArray chunk = get_new_data(); string += toUtf16(chunk); }
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 wegen ihres internen Zustands nicht kopiert werden, aber sie können verschoben werden.
Siehe auch QStringConverter und QStringEncoder.
Dokumentation der Mitgliedsfunktionen
QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::decode(QByteArrayView ba)
QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::operator()(QByteArrayView ba)
QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::decode(const QByteArray &ba)
QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::operator()(const QByteArray &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; }
[constexpr noexcept]
QStringDecoder::QStringDecoder()
Standard konstruiert einen Decoder. Der Standarddecoder ist nicht gültig und kann nicht zur 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 ermitteln.
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 Zeichensatzbezeichner 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().
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.
© 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.