OdString および OdAnsiString クラスを使用したコードの変換

開発者がマルチバイトコーディングから Unicode または UTF へ、そしてその逆へテキストを変換したい場合があります。この目的のために、OdString および OdAnsiString クラスを使用できます。Teigha バージョン 4.3.0 以降、CP_UTF_8 コーディングがサポートされるコーディングリストに含まれるようになりました。

たとえば、UTF-8 コーディングの次の文字配列は、ロシア語で「Test string」です。

char testStr[] = { '\xD0', '\xA2', '\xD0', '\xB5', '\x63', '\xD1', '\x82', '\xD0', '\xBE', '\xD0', '\xB2', '\xD0', '\xB0', '\xD1', '\x8F', '\x20', '\xD0', '\xA1', '\xD1', '\x82', '\xD1', '\x80', '\xD0', '\xBE', '\xD0', '\xBA', '\xD0', '\xB0', 0 };

初期化された UTF-8 ANSI 文字列は次のとおりです。

OdAnsiString ansiStr(testStr, CP_UTF_8);

ASCII バッファのみを持つ OdString は次のとおりです。

OdString unicodeStr(ansiStr);

ここでは、変換の結果として Unicode バッファへのポインタとして pStr を取得します。

const OdChar *pStr = unicodeStr.c_str();

unicodeStr は、両方のバッファ (ASCII と Unicode) が同期されています。unicodeStr から OdAnsiString を取得するには、内容が一定である限り、ASCII バッファは変換なしで使用されます。

これで、初期化された Unicode 文字列が得られました。

OdString unicodeStr1(pStr);

unicodeStr1 は、初期化された Unicode バッファのみを持っています。

ここでは、sAnsiUtf8 で UTF-8 テキストを取得します。

OdAnsiString sAnsiUtf8(nStr, CP_UTF_8);

ここでは、sAnsi1251 で ANSI_1251 テキストを取得します。

OdAnsiString sAnsi1251(sStr, CP_ANSI_1251);

ここでは、コードページ ANSI_1251 を持つ ASCII テキストを使用して OdString を初期化します。

OdString sStr1251(sAnsi1251);

そして、ここではバッファの同期中の変換の結果として Unicode 文字列を取得します。

const OdChar *pStr = nStr1251.c_str();

今すぐ始める

ODAソフトウェアを60日間無料でお試しください。
リスクなし、クレジットカード不要。

無料で試す