在C++11中,如何打印给定Unicode代码的字符

In C++11, how to print a character given its Unicode code?

本文关键字:Unicode 代码 字符 打印 C++11 何打印      更新时间:2023-10-16

我相信这是一个愚蠢的问题,但有没有一种简单的方法可以在C++中打印出一个十六进制代码的Unicode字符?例如:我知道❤是0x2764。有没有一种方法可以使用它的代码来打印它(通过printf或流)?

为了记录,我可以通过写以下内容打印字符:

cout << "u2764" << endl;

但这需要在编译时知道值,而不是使用变量。

感谢

从一条评论中,我看到您使用的是OS X,它使用UTF-8,并且有一个足够完整的C++11库(libc++)实现,以使以下功能正常工作。

#include <codecvt>  // wstring_convert, codecvt_utf8
#include <iostream> // cout
int main() {
  std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> convert;
  std::cout << convert.to_bytes(static_cast<char32_t>(0x2764)) << 'n';
}

这取决于控制台是否能正常使用UTF-8,而OSX就是这样做的。

请确保将wchar_t输出到流。

#include <iostream>
std::wcout << static_cast<wchar_t>(0x2764) << std::endl;