如何从ANSI字符(char)转换为Unicode字符(wchar_t),反之亦然?
是否有用于此目的的跨平台源代码?
答案 0 :(得分:6)
是的,在<cstdlib>
中,您有mbstowcs()
和wcstombs()
。
我之前发布过some code如何使用它,也许这有用。确保您运行该功能两次,一次获得长度,一次执行实际转换。 (这里有一些discussion函数的含义。)而不是手工字符数组,我可能更喜欢std::vector<char>
或std::vector<wchar_t>
来考虑它。
请注意wchar_t
与Unicode无关。如果需要Unicode,则需要使用单独的库(如wchar_t
)进一步从iconv()
转换为Unicode,并且不要将wchar_t
用作Unicode代码点的数据类型。相反,在遗留系统上使用uint32_t
或在现代系统上使用char32_t
。
答案 1 :(得分:1)
显然这是有效的,我不知道它是否会一直有效或是巧合,但我认为值得展示:
const char* c = "hey yo";
wstring s(c, c + 6);
wcout << s << endl;
wcin.get();
打印
hey yo
答案 2 :(得分:0)