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