4

私は、日本語のようなマルチバイト文字列に変換CStringWするという 1 つの問題に固執している 1 つのプロジェクトに取り組んでいます。CStringA

メソッドを使用して文字列リソースから文字列をロードしていますLoadString()。次のコードを試しましたが、うまくいかないようです。

CStringW csTest;
csTest.LoadString(JAPANESE_STRING);
CStringA Msg = CStringA(csTest); // Msg has been returned blank string

std::string Msg = CW2A(csTest);// Msg has been returned blank string

私も試してみ wcstombs()ました。

CStringWに変換する方法を誰か教えてもらえますCStringか? 前もって感謝します。

4

1 に答える 1

6

CStringWUnicode UTF-16文字列を格納します。

に期待するエンコーディングは何CStringAですか?

UTF-8が必要ですか?
この場合、次のことができます。

// strUtf16 is a CStringW.
// Convert from UTF-16 to UTF-8
CStringA strUtf8 = CW2A(strUtf16, CP_UTF8);

CStringAエンコーディングを指定せずに話すのは意味がありません。

の 2 番目のパラメーターは、 Win32 API にCW2A渡されるものです(基本的に、この API の便利で安全な C++ RAII ラッパーであることに注意してください)。この API ドキュメントに従うと、いくつかの「コード ページ」(つまり、エンコーディング) を見つけることができます。WideCharToMultiByte()CodePageCW2A

于 2014-02-26T09:43:35.967 に答える