Класс QStringDecoder
Класс QStringDecoder предоставляет декодер на основе состояний для текста. Подробнее...
| Заголовок: | #include <QStringDecoder> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Наследует: | QStringConverter |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| QStringDecoder(const char *name, QStringConverter::Flags flags = Flag::Default) | |
| QStringDecoder() | |
| QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default) | |
| QChar * | appendToBuffer(QChar *out, QByteArrayView in) |
| QString | decode(const QByteArray &ba) |
| QString | decode(QByteArrayView ba) |
| qsizetype | requiredSpace(qsizetype inputLength) const |
| QString | operator()(const QByteArray &ba) |
| QString | operator()(QByteArrayView ba) |
Подробное описание
Декодер текста преобразует текст в закодированном формате, использующем определённое кодирование, в внутреннее представление Qt.
Преобразование закодированных данных в QString может быть выполнено с помощью следующего кода:
QByteArray encodedString = "..."; auto toUtf16 = QStringDecoder(QStringDecoder::Utf8); QString string = toUtf16(encodedString);
Декодер запоминает любое состояние, необходимое между вызовами, поэтому преобразование данных, полученных частями, например, при получении их по сети, также легко выполняется путём вызова декодера всякий раз, когда доступны новые данные:
auto toUtf16 = QStringDecoder(QStringDecoder::Utf8);
QString string;
while (new_data_available()) {
QByteArray chunk = get_new_data();
string += toUtf16(chunk);
} Объект QStringDecoder сохраняет состояние между частями и, следовательно, работает правильно, даже если части разделены посередине многобайтового символа.
Объекты QStringDecoder не могут быть скопированы из-за их внутреннего состояния, но могут быть перемещены.
См. также QStringConverter и QStringEncoder.
Документация по функциям-членам
QString QStringDecoder::decode(QByteArrayView ba)
QString QStringDecoder::decode(const QByteArray &ba)
QString QStringDecoder::operator()(QByteArrayView ba)
QString QStringDecoder::operator()(const QByteArray &ba)
Преобразует ba и возвращает данные как QString.
QStringDecoder::QStringDecoder(const char *name, QStringConverter::Flags flags = Flag::Default)
Создаёт объект декодера, используя name и flags. Если name не является именем известного кодирования, создаётся недействительный декодер.
См. также isValid().
QStringDecoder::QStringDecoder()
Создаёт декодер по умолчанию. Декодер по умолчанию недействителен и не может быть использован для преобразования текста.
QStringDecoder::QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
Создаёт объект декодера, используя encoding и flags.
QChar *QStringDecoder::appendToBuffer(QChar *out, QByteArrayView in)
Декодирует последовательность байтов, представленных in, и записывает результат декодирования в буфер, начиная с out. Возвращает указатель на конец записанных данных.
out должен быть достаточно большим, чтобы вместить все декодированные данные. Используйте requiredSpace, чтобы определить максимальные требования к размеру для декодирования буфера закодированных данных объёмом in.size() байт.
См. также requiredSpace.
qsizetype QStringDecoder::requiredSpace(qsizetype inputLength) const
Возвращает максимальное количество единиц кода UTF-16, необходимых для обработки inputLength закодированных данных.
См. также appendToBuffer.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qstringdecoder.html