QStringEncoder Class
La clase QStringEncoder proporciona un codificador de texto basado en estados. Más...
| Cabecera: | #include <QStringEncoder> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QStringConverter |
- Lista de todos los miembros, incluyendo los heredados
- QStringEncoder es parte de Clases para datos de cadena.
Nota: Todas las funciones de esta clase son reentrantes.
Tipos Públicos
Funciones Públicas
| 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) |
Descripción Detallada
Un codificador de texto convierte texto de la representación interna de Qt a un formato de texto codificado utilizando una codificación específica.
La conversión de una cadena de Unicode a la codificación local puede realizarse utilizando el siguiente código:
QString string = "..."; auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8); QByteArray encodedString = fromUtf16(string);
El codificador recuerda cualquier estado que se requiera entre llamadas, por lo que convertir datos recibidos en trozos, por ejemplo, al recibirlos a través de una red, es igual de fácil, llamando al codificador cada vez que haya nuevos datos 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 }
El objeto QStringEncoder mantiene el estado entre trozos y, por tanto, funciona correctamente incluso si un carácter sustituto UTF-16 se divide entre trozos.
Los objetos QStringEncoder no pueden copiarse debido a su estado interno, pero pueden moverse.
Ver también QStringConverter y QStringDecoder.
Documentación de tipos de miembros
[alias] QStringEncoder::FinalizeResult
Es un alias de QStringConverter::FinalizeResultChar<char>.
Documentación de funciones miembro
[constexpr noexcept] QStringEncoder::QStringEncoder()
Por defecto construye un codificador. El codificador predeterminado no es válido y no puede utilizarse para convertir texto.
[explicit] QStringEncoder::QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
Crea un objeto codificador usando name y flags. Si name no es el nombre de una codificación conocida se creará un conversor inválido.
Nota: En versiones de Qt anteriores a la 6.8, esta función sólo tomaba un const char *, que se esperaba que estuviera codificado en UTF-8.
Véase también isValid().
[explicit constexpr] QStringEncoder::QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
Crea un objeto codificador utilizando encoding y flags.
char *QStringEncoder::appendToBuffer(char *out, QStringView in)
Codifica in y escribe el resultado codificado en el búfer comenzando en out. Devuelve un puntero al final de los datos escritos.
Nota: out debe ser lo suficientemente grande para poder contener todos los datos decodificados. Utilice requiredSpace() para determinar el tamaño máximo necesario para poder codificar in. Esta función puede escribir en cualquier byte entre out y out + requiredSpace(), incluidos los que están más allá del puntero final devuelto.
Véase también 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)
Convierte in y devuelve una estructura convertible implícitamente a 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()
Señala al descodificador que no llegarán más datos.
También puede proporcionar datos de contenido residual que estaba pendiente de descodificación. Cuando no haya datos residuales que contabilizar, el campo error de la devolución se establecerá en NoError.
Si se suministra out y no es nulo, debe tener espacio en el que se pueden escribir hasta maxlen caracteres. Hasta este número de caracteres de salida residual se escriben en este espacio, con el final indicado por el campo next del valor de retorno. Normalmente, estos datos residuales consistirán en un carácter de sustitución por cada carácter de entrada restante no convertido. Cuando se utiliza una codificación con estado, como ISO-2022-JP, también se pueden escribir bytes para restaurar o finalizar el estado actual del flujo de caracteres.
Si todo el contenido residual se ha entregado a través de out, si out es nullptr, o si no hay datos residuales, el decodificador se restablece a la vuelta de finalize(). En caso contrario, los datos restantes pueden recuperarse o descartarse mediante una nueva llamada a finalize().
Estas funciones se introdujeron en Qt 6.11.
Véase también hasError() y appendToBuffer().
qsizetype QStringEncoder::requiredSpace(qsizetype inputLength) const
Devuelve la cantidad máxima de caracteres necesaria para poder procesar los datos descodificados de inputLength.
Véase también 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.