【发布时间】:2011-11-12 02:13:33
【问题描述】:
如何将 ANSI 字符 (char) 转换为 Unicode 字符 (wchar_t),反之亦然?
有没有为此目的的跨平台源代码?
【问题讨论】:
如何将 ANSI 字符 (char) 转换为 Unicode 字符 (wchar_t),反之亦然?
有没有为此目的的跨平台源代码?
【问题讨论】:
是的,在<cstdlib> 中有mbstowcs() 和wcstombs()。
我之前曾在some code 上发布过如何使用它,也许这会有所帮助。确保您运行该函数两次,一次获取长度,一次进行实际转换。 (这里有一点 discussion 函数的含义。)我可能更喜欢 std::vector<char> 或 std::vector<wchar_t>,而不是手动 char 数组。
请注意,wchar_t 与 Unicode 无关。如果需要 Unicode,则需要使用单独的库(如 iconv())进一步从 wchar_t 转换为 Unicode,并且不要使用 wchar_t 作为 Unicode 代码点的数据类型。相反,在旧系统上使用 uint32_t 或在现代系统上使用 char32_t。
【讨论】:
mbtowc() 和 wctomb()。
显然这行得通,我不知道它是否会一直有效还是巧合,但我认为值得展示:
const char* c = "hey yo";
wstring s(c, c + 6);
wcout << s << endl;
wcin.get();
打印
hey yo
【讨论】: