带有 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_tchar32_t 在 VS 2015 发布之前只是占位符类型定义,因此涉及它们的操作并没有真正完成。

以上是关于带有 MSVC++ 2012 的 Unicode的主要内容,如果未能解决你的问题,请参考以下文章

带有 MSVC 和 CLION 的 Makefile

MSC VS 版本对应

带有 MSVC++ 的 exiflib

Qt安装显示:MSVC2015 编译器带有感叹号,及解决办法

带有 MSVC x64 的 fesetround

在 MSVC10 上使用 llvmpipe 构建 Mesa 3d 7.10