在C++11中,如何打印给定Unicode代码的字符
In C++11, how to print a character given its Unicode code?
我相信这是一个愚蠢的问题,但有没有一种简单的方法可以在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;
相关文章:
- Unicode - ICU 库 - 获取 UnicodeString 中的代码点计数
- C++基础知识(使用其他方法(Unicode?)的相同代码)
- C++Unicode:字节、代码点和图形
- 如何处理C 中Unicode支持涉及的代码重复
- 如何从 UTF-8 字符串的每个字符中获取 UNICODE 代码
- 从ASCII到Unicode字符代码的转换(FreeType2)
- 如何打印 unicode 代码点
- 使用 C++ 测试 Unicode 代码点是否在 ISO-8859-5 集中
- MultiByteToWideChar 用于 Unicode 代码页 1200、1201、12000、12001
- 如何在c++中将unicode代码点转换为utf-8
- 如何使用特定的 Unicode 代码点 RTRIM wchar_t
- 在哪里可以找到 C++ ICU Unicode 的可能代码页参数值
- 匹配 Unicode 代码点的约定,同时遵守 BOM
- 使用json_write()时有两个unicode代码点
- 在C++11中,如何打印给定Unicode代码的字符
- 如何读取具有Unicode代码的文本文件
- 如何将十六进制代码值转换为unicode字符
- 如何使用ICU将Unicode代码点转换为C++中的字符
- Unicode 代码指向字节并反向:如何在C++中做到这一点
- 获取unicode代码点的大写或小写(如uint32_t)