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 )
DecodedData<const QString &> encode (const QString & in )
DecodedData<QStringView> encode (QStringView in )
qsizetype requiredSpace (qsizetype inputLength ) const
DecodedData<const QString &> operator() (const QString & in )
DecodedData<QStringView> operator() (QStringView in )

详细描述

A text encoder converts text from Qt's internal representation into an encoded text format using a specific encoding.

Converting a string from Unicode to the local encoding can be achieved using the following code:

QString string = "...";
auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8);
QByteArray encodedString = fromUtf16(string);
					

The encoder remembers any state that is required between calls, so converting data received in chunks, for example, when receiving it over a network, is just as easy, by calling the encoder whenever new data is available:

auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8);
QByteArray encoded;
while (new_data_available()) {
    QString chunk = get_new_data();
    encoded += fromUtf16(chunk);
}
					

The QStringEncoder object maintains state between chunks and therefore works correctly even if a UTF-16 surrogate character is split between chunks.

QStringEncoder objects can't be copied because of their internal state, but can be moved.

另请参阅 QStringConverter and QStringDecoder .

成员函数文档编制

DecodedData < QStringView > QStringEncoder:: encode ( QStringView in )

DecodedData < QStringView > QStringEncoder:: operator() ( QStringView in )

DecodedData <const QString &> QStringEncoder:: encode (const QString & in )

DecodedData <const QString &> QStringEncoder:: operator() (const QString & in )

转换 in and returns a struct that is implicitly convertible to 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 ()

Default constructs an encoder. The default encoder is not valid, and can't be used for converting text.

[explicit constexpr] QStringEncoder:: QStringEncoder ( QStringConverter::Encoding encoding , QStringConverter::Flags flags = Flag::Default)

Creates an encoder object using encoding and flags .

[explicit] QStringEncoder:: QStringEncoder (const char * name , QStringConverter::Flags flags = Flag::Default)

Creates an encoder object using name and flags 。若 name is not the name of a known encoding an invalid converter will get created.

另请参阅 isValid ().

char *QStringEncoder:: appendToBuffer ( char * out , QStringView in )

Encodes in and writes the encoded result into the buffer starting at out . Returns a pointer to the end of the data written.

注意: out must be large enough to be able to hold all the decoded data. Use requiredSpace () to determine the maximum size requirement to be able to encode in .

另请参阅 requiredSpace ().

qsizetype QStringEncoder:: requiredSpace ( qsizetype inputLength ) const

Returns the maximum amount of characters required to be able to process inputLength decoded data.

另请参阅 appendToBuffer ().