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