QStringDecoder 类提供用于文本基于状态的解码器。 更多...
头: | #include <QStringDecoder> |
CMake: |
find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
继承: | QStringConverter |
注意: 此类的所有函数 可重入 .
QStringDecoder (QStringConverter::Encoding encoding , QStringConverter::Flags flags = Flag::Default) | |
QStringDecoder () | |
QStringDecoder (const char * name , QStringConverter::Flags flags = Flag::Default) | |
QChar * | appendToBuffer (QChar * out , QByteArrayView in ) |
(从 6.6 起)
char16_t *
|
appendToBuffer (char16_t * out , QByteArrayView in ) |
QStringDecoder::EncodedData<const QByteArray &> | decode (const QByteArray & ba ) |
QStringDecoder::EncodedData<QByteArrayView> | decode (QByteArrayView ba ) |
qsizetype | requiredSpace (qsizetype inputLength ) const |
QStringDecoder::EncodedData<const QByteArray &> | operator() (const QByteArray & ba ) |
QStringDecoder::EncodedData<QByteArrayView> | operator() (QByteArrayView ba ) |
QStringDecoder | decoderForHtml (QByteArrayView data ) |
A text decoder converts text an encoded text format that uses a specific encoding into Qt's internal representation.
Converting encoded data into a QString can be achieved using the following code:
QByteArray encodedString = "..."; auto toUtf16 = QStringDecoder(QStringDecoder::Utf8); QString string = toUtf16(encodedString);
The decoder 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 decoder whenever new data is available:
auto toUtf16 = QStringDecoder(QStringDecoder::Utf8); QString string; while (new_data_available()) { QByteArray chunk = get_new_data(); string += toUtf16(chunk); }
The QStringDecoder object maintains state between chunks and therefore works correctly even if chunks are split in the middle of a multi-byte character sequence.
QStringDecoder objects can't be copied because of their internal state, but can be moved.
另请参阅 QStringConverter and QStringEncoder .
转换 ba and returns a struct that is implicitly convertible to 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; }
[explicit constexpr]
QStringDecoder::
QStringDecoder
(
QStringConverter::Encoding
encoding
,
QStringConverter::Flags
flags
= Flag::Default)
Creates an decoder object using encoding and flags .
[constexpr noexcept]
QStringDecoder::
QStringDecoder
()
Default constructs an decoder. The default decoder is not valid, and can't be used for converting text.
[explicit]
QStringDecoder::
QStringDecoder
(const
char
*
name
,
QStringConverter::Flags
flags
= Flag::Default)
Creates an decoder object using name and flags 。若 name is not the name of a known encoding an invalid converter will get created.
另请参阅 isValid ().
Decodes the sequence of bytes viewed by in and writes the decoded result into the buffer starting at out . Returns a pointer to the end of data written.
out
needs to be large enough to be able to hold all the decoded data. Use
requiredSpace
to determine the maximum size requirements to decode an encoded data buffer of
in.size()
字节。
另请参阅 requiredSpace .
[since 6.6]
char16_t
*QStringDecoder::
appendToBuffer
(
char16_t
*
out
,
QByteArrayView
in
)
这是重载函数。
该函数在 Qt 6.6 引入。
[static]
QStringDecoder
QStringDecoder::
decoderForHtml
(
QByteArrayView
data
)
Tries to determine the encoding of the HTML in data by looking at leading byte order marks or a charset specifier in the HTML meta tag and returns a QStringDecoder matching the encoding. If the returned decoder is not valid, the encoding specified is not supported by QStringConverter . If no encoding is detected, the method returns a decoder for Utf8.
另请参阅 isValid ().
Returns the maximum amount of UTF-16 code units required to be able to process inputLength encoded data.
另请参阅 appendToBuffer .