QStringEncoder Class
Die Klasse QStringEncoder bietet einen zustandsbasierten Kodierer für Text. Mehr...
Kopfzeile: | #include <QStringEncoder> |
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
QStringEncoder() | |
QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default) | |
QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default) | |
char * | appendToBuffer(char *out, QStringView in) |
QStringEncoder::DecodedData<QStringView> | encode(QStringView in) |
QStringEncoder::DecodedData<const QString &> | encode(const QString &in) |
qsizetype | requiredSpace(qsizetype inputLength) const |
QStringEncoder::DecodedData<QStringView> | operator()(QStringView in) |
QStringEncoder::DecodedData<const QString &> | operator()(const QString &in) |
Detaillierte Beschreibung
Ein Text-Encoder konvertiert Text von der Qt-internen Repräsentation in ein kodiertes Textformat unter Verwendung einer spezifischen Kodierung.
Die Konvertierung eines Strings von Unicode in die lokale Kodierung kann mit folgendem Code erreicht werden:
QString string = "..."; auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8); QByteArray encodedString = fromUtf16(string);
Der Encoder 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 Encoder immer dann aufgerufen wird, wenn neue Daten verfügbar sind:
auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8); QByteArray encoded; while (new_data_available()) { QString chunk = get_new_data(); encoded += fromUtf16(chunk); }
Das QStringEncoder-Objekt behält den Zustand zwischen den Chunks bei und arbeitet daher auch dann korrekt, wenn ein UTF-16-Surrogatzeichen zwischen den Chunks aufgeteilt wird.
QStringEncoder-Objekte können wegen ihres internen Zustands nicht kopiert werden, aber sie können verschoben werden.
Siehe auch QStringConverter und QStringDecoder.
Dokumentation der Mitgliedsfunktionen
QStringEncoder::DecodedData<QStringView> QStringEncoder::encode(QStringView in)
QStringEncoder::DecodedData<QStringView> QStringEncoder::operator()(QStringView in)
QStringEncoder::DecodedData<const QString &> QStringEncoder::encode(const QString &in)
QStringEncoder::DecodedData<const QString &> QStringEncoder::operator()(const QString &in)
Konvertiert in und gibt eine Struktur zurück, die implizit in QByteArray konvertierbar ist.
QString string = "..."; auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8); auto data = fromUtf16(string); // data's type is QStringEncoder::DecodedData<const QString &> QByteArray encodedString = fromUtf16(string); // Implicit conversion to QByteArray // Here you have to cast "data" to QByteArray auto func = [&]() { return !fromUtf16.hasError() ? QByteArray(data) : "foo"_ba; }
[constexpr noexcept]
QStringEncoder::QStringEncoder()
Standard konstruiert einen Kodierer. Der Standard-Encoder ist nicht gültig und kann nicht für die Konvertierung von Text verwendet werden.
[explicit]
QStringEncoder::QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
Erzeugt ein Encoder-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]
QStringEncoder::QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
Erzeugt ein Encoder-Objekt mit encoding und flags.
char *QStringEncoder::appendToBuffer(char *out, QStringView in)
Kodiert in und schreibt das kodierte Ergebnis in den Puffer, beginnend bei out. Gibt einen Zeiger auf das Ende der geschriebenen Daten zurück.
Hinweis: 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 Kodierung von in zu ermitteln.
Siehe auch requiredSpace().
qsizetype QStringEncoder::requiredSpace(qsizetype inputLength) const
Gibt die maximale Anzahl von Zeichen zurück, die erforderlich sind, um inputLength dekodierte Daten verarbeiten zu können.
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.