QStringDecoder Class
La clase QStringDecoder proporciona un decodificador de texto basado en estados. Más...
| Cabecera: | #include <QStringDecoder> |
| 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
- QStringDecoder es parte de Clases para datos de cadena.
Nota: Todas las funciones de esta clase son reentrantes.
Tipos Públicos
Funciones Públicas
| 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) |
Miembros Públicos Estáticos
| QStringDecoder | decoderForHtml(QByteArrayView data) |
Descripción Detallada
Un decodificador de texto convierte un formato de texto codificado que utiliza una codificación específica en la representación interna de Qt.
La conversión de datos codificados en un QString se puede lograr utilizando el siguiente código:
QByteArray encodedString = "..."; auto toUtf16 = QStringDecoder(QStringDecoder::Utf8); QString string = toUtf16(encodedString);
El decodificador 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 decodificador cada vez que haya nuevos datos 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 }
El objeto QStringDecoder mantiene el estado entre trozos y por lo tanto funciona correctamente incluso si los trozos se dividen en medio de una secuencia de caracteres multibyte.
Los objetos QStringDecoder no pueden ser copiados debido a su estado interno, pero pueden ser movidos.
Ver también QStringConverter y QStringEncoder.
Documentación de tipos de miembros
[alias] QStringDecoder::FinalizeResult
Es un alias de QStringConverter::FinalizeResultChar<char16_t>.
[alias] QStringDecoder::FinalizeResultQChar
Es un alias de QStringConverter::FinalizeResultChar<QChar>.
Documentación de las funciones miembro
[constexpr noexcept] QStringDecoder::QStringDecoder()
Por defecto construye un decodificador. El decodificador por defecto no es válido, y no se puede utilizar para convertir texto.
[explicit] QStringDecoder::QStringDecoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
Crea un objeto decodificador 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] QStringDecoder::QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
Crea un objeto decodificador utilizando encoding y flags.
QChar *QStringDecoder::appendToBuffer(QChar *out, QByteArrayView in)
Decodifica la secuencia de bytes vista por in y escribe el resultado decodificado en el buffer comenzando en out. Devuelve un puntero al final de los datos escritos.
out debe ser lo suficientemente grande como para poder contener todos los datos descodificados. Utilice requiredSpace para determinar el tamaño máximo necesario para descodificar un búfer de datos codificados de in.size() bytes. 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.
[since 6.6] char16_t *QStringDecoder::appendToBuffer(char16_t *out, QByteArrayView in)
Esta es una función sobrecargada.
Esta función se introdujo en Qt 6.6.
[static] QStringDecoder QStringDecoder::decoderForHtml(QByteArrayView data)
Intenta determinar la codificación del HTML en data fijándose en las marcas de orden de bytes iniciales o en un especificador charset de la metaetiqueta HTML y devuelve un QStringDecoder que coincide con la codificación. Si el decodificador devuelto no es válido, la codificación especificada no está soportada por QStringConverter. Si no se detecta ninguna codificación, el método devuelve un descodificador para Utf8.
Véase también 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()
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.
Si todo el contenido residual se ha entregado a través de out, si out es nullptr, o si no hay datos residuales, el descodificador se reinicia 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 QStringDecoder::requiredSpace(qsizetype inputLength) const
Devuelve la cantidad máxima de unidades de código UTF-16 necesarias para poder procesar los datos codificados en inputLength.
Véase también 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)
Convierte ba y devuelve una estructura convertible implícitamente a 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.