带有 MSVC++ 2012 的 Unicode
Posted
技术标签:
【中文标题】带有 MSVC++ 2012 的 Unicode【英文标题】:Unicode with MSVC++ 2012 【发布时间】:2012-09-27 17:10:05 【问题描述】:我知道 C++11 现在支持 unicode(std::u16string/u32string 和 u/U 前缀)。但是我究竟如何使用 Visual Studio 将 unicode 输出到终端呢?我很困惑。
【问题讨论】:
_setmode(_fileno(stdout), _O_U16TEXT);
可能仍然是这样做的方法.. 从u32string
转换后
"C++11 现在支持 unicode" 那不支持 Unicode。这只是支持存储 UTF-16 和 UTF-32 代码点序列。实际的 Unicode 支持需要的远不止这些。
"如何将 Unicode 输出到终端?"答:非常小心!
老实说 Cygwin 的最新终端是控制台中 UTF8 的最佳方法。
Output unicode strings in Windows console app的可能重复
【参考方案1】:
如前所述,c++11 不提供 unicode,而只是提供固定宽度 char char16_t、char8_t char32_t 的新字符串文字,带有 u""、U"" ->NB,这已经比之前的 wchar 好(Win32 上 16 位,Mac 上 32 位)
然而,unicode 是计划好的,在完全重写之前的提案之后,这应该是对 unicode 的更完整的支持:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3398.html
要使用由字符串文字创建的字符串,只需使用
请注意,您可以在此处阅读对 c++11 功能的支持:this is not really complete yet 我尝试了 char16_t 和 char32_t 类型,它们是已定义的,但我不认为它是最终的支持,更多的是过渡支持。 可能还不支持字符串文字。
【讨论】:
是的,MSVC 的char16_t
和 char32_t
在 VS 2015 发布之前只是占位符类型定义,因此涉及它们的操作并没有真正完成。以上是关于带有 MSVC++ 2012 的 Unicode的主要内容,如果未能解决你的问题,请参考以下文章