在C ++ 11中,如何在给出Unicode代码的情况下打印字符?

时间:2013-08-28 12:46:02

标签: c++ unicode printing hex

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

为了记录,我可以通过写下来打印角色:

cout << "\u2764" << endl;

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

由于

2 个答案:

答案 0 :(得分:2)

从评论中我看到你在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';
}

这取决于控制台是否正常使用OS X的UTF-8。

答案 1 :(得分:0)

请务必将wchar_t输出到流。

#include <iostream>

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