QStringEncoder Class
Die Klasse „QStringEncoder“ stellt einen zustandsbasierten Encoder für Text bereit. Mehr...
| Header: | #include <QStringEncoder> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Erbt von: | QStringConverter |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QStringEncoder ist Teil der Klassen für Zeichenfolgendaten.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
Öffentliche Typen
Ö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) |
(since 6.11) QStringEncoder::FinalizeResult | finalize() |
(since 6.11) QStringEncoder::FinalizeResult | finalize(char *out, qsizetype maxlen) |
| qsizetype | requiredSpace(qsizetype inputLength) const |
| QStringEncoder::DecodedData<QStringView> | operator()(QStringView in) |
| QStringEncoder::DecodedData<const QString &> | operator()(const QString &in) |
Ausführliche Beschreibung
Ein Text-Encoder wandelt Text aus der internen Darstellung von Qt mithilfe einer bestimmten Kodierung in ein kodiertes Textformat um.
Die Konvertierung einer Zeichenkette von Unicode in die lokale Kodierung kann mit dem folgenden Code erreicht werden:
QString string = "...";
auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8);
QByteArray encodedString = fromUtf16(string);Der Encoder speichert alle zwischen den Aufrufen erforderlichen Zustände, sodass die Konvertierung von Daten, die in Blöcken empfangen werden – beispielsweise bei der Übertragung über ein Netzwerk –, ebenso einfach ist, indem der Encoder aufgerufen wird, sobald neue Daten verfügbar sind:
auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8);
QByteArray encoded;
while (new_data_available() && !fromUtf16.hasError()) {
QString chunk = get_new_data();
encoded += fromUtf16(chunk);
}
auto result = fromUtf16.finalize();
if (result.error != QStringEncoder::FinalizeResult::Error::NoError) {
// Handle error
}Das QStringEncoder-Objekt behält den Zustand zwischen den Blöcken bei und funktioniert daher auch dann korrekt, wenn ein UTF-16-Surrogatzeichen auf mehrere Blöcke aufgeteilt ist.
QStringEncoder-Objekte können aufgrund ihres internen Zustands nicht kopiert, aber verschoben werden.
Siehe auch QStringConverter und QStringDecoder.
Dokumentation zu den Mitgliedstypen
[alias] QStringEncoder::FinalizeResult
Dies ist ein Alias für „ QStringConverter::FinalizeResultChar<char>“.
Dokumentation zu den Member-Funktionen
[constexpr noexcept] QStringEncoder::QStringEncoder()
„default“ erstellt einen Encoder. Der Standard-Encoder ist ungültig und kann nicht zur Konvertierung von Text verwendet werden.
[explicit] QStringEncoder::QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
Erstellt ein Encoder-Objekt unter Verwendung von ` name ` und ` flags`. Wenn ` name ` nicht der Name einer bekannten Kodierung ist, wird ein ungültiger Konverter erstellt.
Hinweis: In Qt-Versionen vor 6.8 nahm diese Funktion nur einen ` const char *` entgegen, von dem erwartet wurde, dass er UTF-8-kodiert ist.
Siehe auch isValid().
[explicit constexpr] QStringEncoder::QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
Erstellt ein Encoder-Objekt unter Verwendung von „ 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 maximale erforderliche Größe zu ermitteln, die zum Kodieren von in benötigt wird. Diese Funktion schreibt möglicherweise in beliebige Bytes zwischen out und out + requiredSpace(), einschließlich solcher, die hinter dem zurückgegebenen Endzeiger liegen.
Siehe auch ` requiredSpace()`.
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; };[since 6.11] QStringEncoder::FinalizeResult QStringEncoder::finalize()
[since 6.11] QStringEncoder::FinalizeResult QStringEncoder::finalize(char *out, qsizetype maxlen)
Signalisiert dem Decoder, dass keine weiteren Daten mehr eintreffen werden.
Kann auch Daten aus verbleibenden Inhalten liefern, deren Dekodierung noch aussteht. Wenn keine verbleibenden Daten vorhanden sind, wird das Feld „ error “ der Rückgabe auf „ NoError “ gesetzt.
Wenn „ out “ angegeben wird und nicht null ist, muss der Speicherplatz so groß sein, dass bis zu „ maxlen “ Zeichen geschrieben werden können. Bis zu dieser Anzahl an Restausgabezeichen wird in diesen Speicherplatz geschrieben, wobei das Ende durch das Feld „ next “ des Rückgabewerts angezeigt wird. In der Regel bestehen diese Restdaten aus einem Ersatzzeichen pro verbleibendem, noch nicht konvertiertem Eingabezeichen. Bei Verwendung einer zustandsbehafteten Kodierung, wie beispielsweise ISO-2022-JP, können dabei auch Bytes geschrieben werden, um den aktuellen Zustand im Zeichenstrom wiederherzustellen oder zu beenden.
Wenn der gesamte Restinhalt über ` out` übermittelt wurde, wenn ` out ` den Wert ` nullptr` hat oder wenn keine Restdaten vorhanden sind, wird der Decoder bei der Rückkehr aus ` finalize()` zurückgesetzt. Andernfalls können die verbleibenden 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 QStringEncoder::requiredSpace(qsizetype inputLength) const
Gibt die maximale Anzahl an Zeichen zurück, die benötigt wird, um die von „ inputLength “ dekodierten Daten verarbeiten zu können.
Siehe auch ` appendToBuffer()`
© 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.