Sur cette page

QStringEncoder Class

La classe QStringEncoder fournit un encodeur de texte basé sur un état. En savoir plus...

En-tête : #include <QStringEncoder>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Hérite de : QStringConverter

Remarque : 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é à l'aide d'un encodage spécifique.

La conversion d'une chaîne de caractères de l'Unicode vers le codage local peut être effectuée à l'aide du code suivant :

QString string = "...";
auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8);
QByteArray encodedString = fromUtf16(string);

L'encodeur mémorise tout état nécessaire entre les appels ; ainsi, la conversion de données reçues par blocs, par exemple lors d'une réception sur un réseau, est tout aussi simple : il suffit d'appeler l'encodeur dès 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 son état d'un bloc à l'autre et fonctionne donc correctement même si un caractère de substitution UTF-16 est réparti sur plusieurs blocs.

Les objets QStringEncoder ne peuvent pas être copiés en raison de leur état interne, mais peuvent être déplacés.

Voir également QStringConverter et QStringDecoder.

Documentation sur les types de membres

[alias] QStringEncoder::FinalizeResult

Il s'agit d'un alias pour QStringConverter::FinalizeResultChar<char>.

Documentation sur les fonctions membres

[constexpr noexcept] QStringEncoder::QStringEncoder()

La valeur par défaut crée 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 à l'aide de ` name ` et ` flags`. Si ` name ` n'est pas le nom d'un encodage connu, un convertisseur non valide sera créé.

Remarque : dans les versions de Qt antérieures à la version 6.8, cette fonction ne prenait qu’un const char *, qui était censé être encodé en UTF-8.

Voir également isValid().

[explicit constexpr] QStringEncoder::QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)

Crée un objet encodeur à 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 l'adresse out. Renvoie un pointeur vers 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 afin de pouvoir encoder in. Cette fonction peut écrire dans n'importe quel octet compris entre out et out + requiredSpace(), y compris ceux situés au-delà du pointeur de fin renvoyé.

Voir également 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)

Convertit ` in ` et renvoie une structure 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()

[since 6.11] QStringEncoder::FinalizeResult QStringEncoder::finalize(char *out, qsizetype maxlen)

Indique au décodeur qu'aucune autre donnée ne sera transmise.

Peut également fournir des données provenant du contenu résiduel dont le décodage était en attente. Lorsqu’il n’y a pas de données résiduelles à prendre en compte, le champ « error » de la réponse sera défini sur « NoError ».

Si out est fourni et n’est pas nul, il doit disposer d’un espace dans lequel jusqu’à maxlen caractères peuvent être écrits. Un nombre maximal de caractères de sortie résiduelle correspondant à cette valeur est écrit 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 par caractère d’entrée restant non converti. Lors de l’utilisation d’un encodage avec état, tel que ISO-2022-JP, cela peut également écrire des octets permettant de restaurer ou de mettre fin à l’état actuel dans le flux de caractères.

Si tout le contenu résiduel a été transmis via ` out`, si ` out ` est égal à ` nullptr`, ou s’il n’y a pas de données résiduelles, le décodeur est réinitialisé au retour de la fonction ` finalize()`. Sinon, les données restantes peuvent être récupérées ou ignorées par un nouvel appel à la fonction ` finalize()`.

Ces fonctions ont été introduites dans Qt 6.11.

Voir également hasError() et appendToBuffer().

qsizetype QStringEncoder::requiredSpace(qsizetype inputLength) const

Renvoie le nombre maximal de caractères nécessaires pour traiter les données décodées par inputLength.

Voir également 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.