如何从 ANSI 字符 (char) 转换为 Unicode 字符 (wchar_t),反之亦然?
是否有任何用于此目的的跨平台源代码?
是的,在<cstdlib>
你有mbstowcs()
and wcstombs()
。
我之前已经发布了一些关于如何使用它的代码,也许这很有帮助。确保您运行该函数两次,一次获取长度,一次进行实际转换。(这里对函数的含义进行了一些讨论std::vector<char>
。)而不是手动 char 数组,我可能更喜欢or std::vector<wchar_t>
,来考虑它。
请注意,wchar_t
这与 Unicode 无关。如果需要 Unicode,则需要wchar_t
使用单独的库(如iconv()
)进一步从 Unicode 转换为 Unicode,并且不要wchar_t
用作 Unicode 代码点的数据类型。相反,uint32_t
在遗留系统或char32_t
现代系统上使用。
Apparently this works, I don't know if it will always work or if it's a coincidence, but I thought it was worth showing:
const char* c = "hey yo";
wstring s(c, c + 6);
wcout << s << endl;
wcin.get();
prints
hey yo