QStringEncoder 类
QStringEncoder 类提供了一个基于状态的文本编码器。 更多信息...
头文件 | #include <QStringEncoder> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承 | QStringConverter |
注意: 类中所有函数都是可重入的。
公共函数
QStringEncoder() | |
QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default) | |
QStringEncoder(const char *name, QStringConverter::Flags flags = Flag::Default) | |
char * | appendToBuffer(char *out, QStringView in) |
QStringEncoder::DecodedData<const QString &> | encode(const QString &in) |
QStringEncoder::DecodedData<QStringView> | encode(QStringView in) |
qsizetype | requiredSpace(qsizetype inputLength) const |
QStringEncoder::DecodedData<const QString &> | operator()(const QString &in) |
QStringEncoder::DecodedData<QStringView> | 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.
成员函数文档
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)
将in转换并返回一个可以隐式转换为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; }
[constexpr noexcept]
QStringEncoder::QStringEncoder()
默认构建编码器。默认编码器无效,无法用于转换文本。
[explicit constexpr]
QStringEncoder::QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
使用encoding和flags创建编码器对象。
[explicit]
QStringEncoder::QStringEncoder(const char *name, QStringConverter::Flags flags = Flag::Default)
使用name和flags创建编码器对象。如果name不是已知编码的名称,则会创建一个无效的转换器。
另请参阅isValid().
char *QStringEncoder::appendToBuffer(char *out, QStringView in)
将in编码并写入起始地址为out的缓冲区。返回写入数据的末尾指针。
注意:out的大小必须足够以容纳所有解码数据。使用requiredSpace()来确定编码in所需的最大大小。
另请参阅requiredSpace().
qsizetype QStringEncoder::requiredSpace(qsizetype inputLength) const
返回处理inputLength解码数据所需的最大字符数。
另请参阅appendToBuffer().
© 2024 Qt公司。本文档中的文档贡献版权归各所有者所有。本文档的提供受GNU自由文档许可证版本1.3条款约束,该许可证由自由软件基金会发布。Qt及相关标志是芬兰的Qt公司以及全球其他地区的商标。所有其他商标均属于各自所有者。