QStringDecoder Class
La classe QStringDecoder fournit un décodeur de texte basé sur l'état. Plus d'informations...
| En-tête : | #include <QStringDecoder> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Héritages : | QStringConverter |
- Liste de tous les membres, y compris les membres hérités
- QStringDecoder fait partie des classes pour les données de type chaîne de caractères.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Types publics
Fonctions publiques
| 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) |
Membres publics statiques
| QStringDecoder | decoderForHtml(QByteArrayView data) |
Description détaillée
Un décodeur de texte convertit un format de texte encodé qui utilise un encodage spécifique dans la représentation interne de Qt.
La conversion de données encodées en QString peut être réalisée à l'aide du code suivant :
QByteArray encodedString = "..."; auto toUtf16 = QStringDecoder(QStringDecoder::Utf8); QString string = toUtf16(encodedString);
Le décodeur se souvient de tout état requis entre les appels, de sorte que la conversion de données reçues par morceaux, par exemple, lors de la réception sur un réseau, est tout aussi facile, en appelant le décodeur chaque fois que de nouvelles données sont disponibles :
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 }
L'objet QStringDecoder conserve l'état entre les morceaux et fonctionne donc correctement même si les morceaux sont séparés au milieu d'une séquence de caractères de plusieurs octets.
Les objets QStringDecoder ne peuvent pas être copiés en raison de leur état interne, mais ils peuvent être déplacés.
Voir également QStringConverter et QStringEncoder.
Documentation sur les types de membres
[alias] QStringDecoder::FinalizeResult
Il s'agit d'un alias de QStringConverter::FinalizeResultChar<char16_t>.
[alias] QStringDecoder::FinalizeResultQChar
Il s'agit d'un alias de QStringConverter::FinalizeResultChar<QChar>.
Documentation sur les fonctions membres
[constexpr noexcept] QStringDecoder::QStringDecoder()
Default construit un décodeur. Le décodeur par défaut n'est pas valide et ne peut pas être utilisé pour convertir du texte.
[explicit] QStringDecoder::QStringDecoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
Crée un objet décodeur en utilisant name et flags. Si name n'est pas le nom d'un encodage connu, un convertisseur invalide sera créé.
Note : Dans les versions de Qt antérieures à 6.8, cette fonction ne prenait qu'un objet const char *, qui devait être encodé en UTF-8.
Voir aussi isValid().
[explicit constexpr] QStringDecoder::QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
Crée un objet décodeur en utilisant encoding et flags.
QChar *QStringDecoder::appendToBuffer(QChar *out, QByteArrayView in)
Décode la séquence d'octets visualisée par in et écrit le résultat décodé dans le tampon commençant par out. Renvoie un pointeur à la fin des données écrites.
out Le tampon doit être suffisamment grand pour pouvoir contenir toutes les données décodées. Utilisez requiredSpace pour déterminer la taille maximale requise pour décoder un tampon de données codées de in.size() octets. Cette fonction peut écrire sur n'importe quel octet entre out et out + requiredSpace(), y compris ceux qui se trouvent après le pointeur de fin renvoyé.
Voir également requiredSpace.
[since 6.6] char16_t *QStringDecoder::appendToBuffer(char16_t *out, QByteArrayView in)
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.6.
[static] QStringDecoder QStringDecoder::decoderForHtml(QByteArrayView data)
Tente de déterminer le codage du HTML dans data en examinant les marques d'ordre des octets ou un spécificateur de jeu de caractères dans la balise HTML meta et renvoie un QStringDecoder correspondant au codage. Si le décodeur renvoyé n'est pas valide, cela signifie que le codage spécifié n'est pas pris en charge par QStringConverter. Si aucun encodage n'est détecté, la méthode renvoie un décodeur pour Utf8.
Voir aussi 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()
Signale au décodeur qu'aucune autre donnée n'arrivera.
Peut également fournir des données provenant d'un contenu résiduel en attente de décodage. Lorsqu'il n'y a pas de données résiduelles à prendre en compte, le champ error du retour est mis à NoError.
Si out est fourni et qu'il n'est pas nul, il doit comporter un espace dans lequel peuvent être écrits jusqu'à maxlen caractères. Jusqu'à ce nombre de caractères de sortie résiduelle sont écrits dans cet espace, la fin étant indiquée par le champ next de la valeur de retour. En règle générale, ces données résiduelles consistent en un caractère de remplacement pour chaque caractère d'entrée non converti restant.
Si tout le contenu résiduel a été fourni via out, si out est nullptr ou s'il n'y a pas de données résiduelles, le décodeur est réinitialisé au retour de finalize(). Sinon, les données restantes peuvent être récupérées ou supprimées par un nouvel appel à finalize().
Ces fonctions ont été introduites dans Qt 6.11.
Voir également hasError() et appendToBuffer().
qsizetype QStringDecoder::requiredSpace(qsizetype inputLength) const
Renvoie la quantité maximale d'unités de code UTF-16 nécessaires pour pouvoir traiter les données encodées sur inputLength.
Voir aussi 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)
Convertit ba et renvoie une structure qui est implicitement convertible en QString.
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.