如果我知道 str 中这 2 个汉字你好的 unicode 代码点
如何将此 char * str 代码点转换为汉字并将其分配给 wchar_t * wstr ?
char * str = "4F60 597D";
wchar_t * wstr;
我知道我可以像这样直接分配并解决问题。
wchar_t * wstr = L"\u4F60\u597D";
但是我的问题比这更复杂,我的情况不允许这样做。
如何进行从文字代码点到 wchar_t * 的转换?
谢谢。
我正在使用将字符集设置为 MBCS 的 MS Visual C,假设我不能使用 UNICODE 字符集。
更新:抱歉,刚刚将wchar_t wstr更正为wchar_t * wstr
UPDATE char * str 包含 UTF-8 代码单元序列,用于 2 个汉字你好
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 打印出日文字符?而不是中文?正确的语言环境名称是什么?