繁体   English   中英

如何将ANSI字符(char)转换为Unicode字符(wchar_t),反之亦然?

[英]How can I convert from ANSI character (char) to Unicode character (wchar_t) and vice versa?

如何将ANSI字符(char)转换为Unicode字符(wchar_t),反之亦然?

是否有用于此目的的跨平台源代码?

是的,在<cstdlib>您具有mbstowcs()wcstombs()

之前,我已经发布了一些有关如何使用它的代码 ,这可能会有所帮助。 确保运行函数两次,一次获取长度,一次运行实际转换。 (这里对功能的含义进行了一些讨论 。)我可能会更喜欢使用std::vector<char>std::vector<wchar_t>来代替手动char数组。

请注意, wchar_t与Unicode无关。 如果需要Unicode,则需要使用单独的库(例如iconv() )将wchar_t进一步转换为Unicode,并且不要将wchar_t用作Unicode代码点的数据类型。 相反,请在旧系统上使用uint32_t或在现代系统上使用char32_t

显然,这可行,我不知道它是否将一直有效,还是偶然的,但我认为值得展示:

const char* c = "hey yo";
wstring s(c, c + 6);

wcout << s << endl;
wcin.get();

版画

hey yo

如果您确实在使用Unicode而不仅仅是16位字符,请查看ICUiconv之类的库。 也就是说,Unicode不仅仅像普通的wchar_t那样处理单个字符,甚至不处理16位字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM