str のこの 2 つの漢字「你好」の Unicode コードポイントがわかっている場合
この char * str コードポイントを漢字に変換して wchar_t * wstr に割り当てるにはどうすればよいですか?
char * str = "4F60 597D";
wchar_t * wstr;
このように直接割り当てて問題を解決できることを知っています。
wchar_t * wstr = L"\u4F60\u597D";
しかし、私の問題はそれよりも複雑です。私の状況ではそれができません。
リテラル codepoint から wchar_t * への変換を行うにはどうすればよいですか?
ありがとう。
文字セットを MBCS に設定して MS Visual C を使用しています。UNICODE 文字セットを使用できないと想定しています。
更新: 申し訳ありませんが、wchar_t wstrをwchar_t * wstrに修正しました
更新 char * str には、2 つの漢字「你好」の UTF-8 コード単位のシーケンスが含まれています
char * str = "\xE4\xBD\xA0\xE5\xA5\xBD";
size_t len = strlen(str) + 1;
wchar_t * wstr = new wchar_t[len];
size_t convertedSize = 0;
_locale_t local = _create_locale( LC_ALL , "Chinese");
_mbstowcs_s_l(&convertedSize, wstr, len, str, _TRUNCATE, local);
MessageBoxW( NULL, wstr , (LPCWSTR)L"Hello", MB_OK);
MessageBox が日本語の文字を出力するのはなぜですか? 中国語の代わりに?使用する正しいロケール名は何ですか?