我确信这是一个愚蠢的问题,但是有一种直接的方法可以在C ++中使用十六进制代码打印Unicode字符吗?例如:我知道❤的代码是0x2764。有没有办法可以使用它的代码来打印它(通过printf或在流上)?
为了记录,我可以通过写下来打印角色:
cout << "\u2764" << endl;
但这需要在编译时知道值而不是使用变量。
由于
答案 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;