QStringEncoder Class
La classe QStringEncoder fournit un encodeur de texte basé sur l'état. Plus d'informations...
| En-tête : | #include <QStringEncoder> |
| 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
- QStringEncoder fait partie des classes pour les données de type chaîne de caractères.
Note : Toutes les fonctions de cette classe sont réentrantes.
Types publics
Fonctions publiques
| 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) |
Description détaillée
Un encodeur de texte convertit le texte de la représentation interne de Qt en un format de texte encodé utilisant un encodage spécifique.
La conversion d'une chaîne de caractères d'Unicode à l'encodage local peut être réalisée à l'aide du code suivant :
QString string = "..."; auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8); QByteArray encodedString = fromUtf16(string);
L'encodeur se souvient de tout état requis entre les appels, de sorte que la conversion des données reçues par morceaux, par exemple, lors de la réception sur un réseau, est tout aussi facile, en appelant l'encodeur chaque fois que de nouvelles données sont disponibles :
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 }
L'objet QStringEncoder conserve l'état entre les morceaux et fonctionne donc correctement même si un caractère de substitution UTF-16 est divisé entre les morceaux.
Les objets QStringEncoder ne peuvent pas être copiés en raison de leur état interne, mais ils peuvent être déplacés.
Voir aussi QStringConverter et QStringDecoder.
Documentation sur les types de membres
[alias] QStringEncoder::FinalizeResult
Il s'agit d'un alias de QStringConverter::FinalizeResultChar<char>.
Documentation sur les fonctions membres
[constexpr noexcept] QStringEncoder::QStringEncoder()
Default construit un encodeur. L'encodeur par défaut n'est pas valide et ne peut pas être utilisé pour convertir du texte.
[explicit] QStringEncoder::QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
Crée un objet encodeur 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 à la 6.8, cette fonction ne prenait qu'un objet const char *, qui était censé être encodé en UTF-8.
Voir aussi isValid().
[explicit constexpr] QStringEncoder::QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
Crée un objet codeur à l'aide de encoding et flags.
char *QStringEncoder::appendToBuffer(char *out, QStringView in)
Encode in et écrit le résultat encodé dans le tampon à partir de out. Renvoie un pointeur à la fin des données écrites.
Remarque : out doit être suffisamment grand pour pouvoir contenir toutes les données décodées. Utilisez requiredSpace() pour déterminer la taille maximale requise pour pouvoir encoder in. 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().
QStringEncoder::DecodedData<const QString &> QStringEncoder::encode(const QString &in)
QStringEncoder::DecodedData<QStringView> QStringEncoder::encode(QStringView in)
QStringEncoder::DecodedData<const QString &> QStringEncoder::operator()(const QString &in)
QStringEncoder::DecodedData<QStringView> QStringEncoder::operator()(QStringView in)
Convertit in et renvoie une structure qui est implicitement convertible en QByteArray.
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(char *out, qsizetype maxlen)
[since 6.11] QStringEncoder::FinalizeResult QStringEncoder::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. Lors de l'utilisation d'un codage avec état, tel que ISO-2022-JP, des octets peuvent également être écrits pour restaurer ou terminer l'état actuel du flux de caractères.
Si tout le contenu résiduel a été transmis 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 QStringEncoder::requiredSpace(qsizetype inputLength) const
Renvoie le nombre maximum de caractères requis pour pouvoir traiter les données décodées sur inputLength.
Voir aussi 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.