QStringEncoder Class
QStringEncoder クラスは、テキストの状態ベースのエンコーダを提供します。詳細...
ヘッダー | #include <QStringEncoder> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
継承: | 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)
name とflags を使ってエンコーダオブジェクトを作成します。name が既知のエンコーディングの名前でない場合、無効なコンバータが作成されます。
注意: Qt 6.8 より前のバージョンでは、この関数はconst char *
だけを受け取りました。
isValid()も参照してください 。
[explicit constexpr]
QStringEncoder::QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
encoding とflags を使ってエンコーダーオブジェクトを作成する。
char *QStringEncoder::appendToBuffer(char *out, QStringView in)
in をエンコードし、エンコード結果をout から始まるバッファに書き込む。書き込まれたデータの終わりへのポインタを返す。
注意: out は、デコードされたデータをすべて保持できる大きさでなければならない。in をエンコードするために必要な最大サイズを決定するには、requiredSpace() を使用する。
requiredSpace()も参照のこと 。
qsizetype QStringEncoder::requiredSpace(qsizetype inputLength) const
inputLength デコードされたデータを処理するために必要な最大文字数を返す。
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.