QStringEncoder Class

QStringEncoder クラスは、テキストの状態ベースのエンコーダを提供します。詳細...

Header: #include <QStringEncoder>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Inherits: QStringConverter

注意:このクラスの関数はすべてリエントラントです。

パブリック関数

QStringEncoder()
QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
char *appendToBuffer(char *out, QStringView in)
QStringEncoder::DecodedData<QStringView> encode(QStringView in)
QStringEncoder::DecodedData<const QString &> encode(const QString &in)
qsizetype requiredSpace(qsizetype inputLength) const
QStringEncoder::DecodedData<QStringView> operator()(QStringView in)
QStringEncoder::DecodedData<const QString &> operator()(const QString &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] QStringEncoder::QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)

nameflags を使ってエンコーダオブジェクトを作成します。name が既知のエンコーディングの名前でない場合、無効なコンバータが作成されます。

注意: Qt の 6.8 より前のバージョンでは、この関数はconst char * を受け取るだけでした。

isValid()も参照してください

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

encodingflags を使ってエンコーダオブジェクトを作成します。

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

in をエンコードし、エンコード結果をout から始まるバッファに書き込みます。書き込まれたデータの最後へのポインタを返します。

注: out は、デコードされたデータをすべて保持できる大きさでなければならない。in をエンコードするために必要な最大サイズを決定するには、requiredSpace() を使用する。

requiredSpace()も参照のこと

qsizetype QStringEncoder::requiredSpace(qsizetype inputLength) const

inputLength デコードされたデータを処理するために必要な最大文字数を返します。

appendToBuffer()も参照して ください。

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。