QStringDecoder Class
QStringDecoder クラスは、テキストの状態ベースのデコーダを提供します。詳細...
ヘッダー | #include <QStringDecoder> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
継承: | QStringConverter |
注意:このクラスの関数はすべてリエントラントです。
パブリック関数
QStringDecoder() | |
QStringDecoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default) | |
QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default) | |
QChar * | appendToBuffer(QChar *out, QByteArrayView in) |
(since 6.6) char16_t * | appendToBuffer(char16_t *out, QByteArrayView in) |
QStringDecoder::EncodedData<QByteArrayView> | decode(QByteArrayView ba) |
QStringDecoder::EncodedData<const QByteArray &> | decode(const QByteArray &ba) |
qsizetype | requiredSpace(qsizetype inputLength) const |
QStringDecoder::EncodedData<QByteArrayView> | operator()(QByteArrayView ba) |
QStringDecoder::EncodedData<const QByteArray &> | operator()(const QByteArray &ba) |
静的パブリックメンバ
QStringDecoder | decoderForHtml(QByteArrayView data) |
詳細な説明
テキストデコーダは、特定のエンコーディングを使用してエンコードされたテキストフォーマットを 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も参照して ください。
メンバ関数ドキュメント
QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::decode(QByteArrayView ba)
QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::operator()(QByteArrayView ba)
QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::decode(const QByteArray &ba)
QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::operator()(const QByteArray &ba)
ba を変換し、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; }
[constexpr noexcept]
QStringDecoder::QStringDecoder()
デフォルトはデコーダを構築する。デフォルトのデコーダは有効ではないので、テキストの変換には使えない。
[explicit]
QStringDecoder::QStringDecoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
name とflags を使ってデコーダオブジェクトを作成します。name が既知のエンコーディングの名前でない場合、無効なコンバータが作成されます。
注意: Qt 6.8 より前のバージョンでは、この関数はconst char *
を受け取るだけでした。
isValid()も参照してください 。
[explicit constexpr]
QStringDecoder::QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
encoding とflags を使ってデコーダーオブジェクトを作成します。
QChar *QStringDecoder::appendToBuffer(QChar *out, QByteArrayView in)
in で見たバイト列をデコードし、デコード結果をout から始まるバッファに書き込む。書き込まれたデータの終わりへのポインタを返す。
out は、デコードされたデータをすべて保持できる大きさが必要である。 バイトのエンコード・データ・バッファをデコードするために必要な最大サイズを決定するには、 を使用する。in.size()
requiredSpace
requiredSpaceも参照のこと 。
[since 6.6]
char16_t *QStringDecoder::appendToBuffer(char16_t *out, QByteArrayView in)
これはオーバーロードされた関数です。
この関数は Qt 6.6 で導入されました。
[static]
QStringDecoder QStringDecoder::decoderForHtml(QByteArrayView data)
HTML metaタグの先頭のバイトオーダマークやcharset指定子からdata のHTMLのエンコーディングを判別し、そのエンコーディングにマッチするQStringDecoder を返す。返されたデコーダが有効でない場合、指定されたエンコーディングはQStringConverter でサポートされていません。エンコーディングが検出されなかった場合、このメソッドはUtf8のデコーダを返します。
isValid()も参照 。
qsizetype QStringDecoder::requiredSpace(qsizetype inputLength) const
inputLength エンコードされたデータを処理するために必要な UTF-16 コードユニットの最大量を返します。
appendToBufferも参照のこと 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.