不知怎的,我在谷歌上找不到答案。我在搜索时可能使用了错误的术语。我正在尝试执行一个简单的任务,将表示字符的数字转换为字符本身,如下表所示:http://unicode-table.com/en/#0460
例如,如果我的号码是 47(即“\”),我可以将 47 放入char
并使用打印它cout
我会在控制台中看到一个反斜杠(低于 256 的数字没有问题)。
但如果我的号码是 1120,则该字符应该是“Ѡ”(拉丁语中的 omega)。我假设它由几个字符表示(其中cout
当它打印到屏幕上时会知道转换为“Ѡ”)。
如何获得代表“Ѡ”的“几个字符”?
我有一个名为 ICU 的库,我使用的是 UTF-8。
你叫什么统一码号码通常称为代码点。如果您想使用 C++ 和 Unicode 字符串,ICU 提供了icu::UnicodeString班级。你可以在这里找到文档.
创建一个Unicode字符串持有单个字符,您可以使用构造函数,它接受一个代码点UChar32:
icu::UnicodeString::UnicodeString(UChar32 ch)
然后你可以调用转UTF8字符串方法将字符串转换为 UTF-8。
示例程序:
#include <iostream>
#include <string>
#include <unicode/unistr.h>
int main() {
icu::UnicodeString uni_str((UChar32)1120);
std::string str;
uni_str.toUTF8String(str);
std::cout << str << std::endl;
return 0;
}
在像 Debian 这样的 Linux 系统上,您可以使用以下命令编译该程序:
g++ so.cc -o so -licuuc
如果您的终端支持 UTF-8,这将打印一个 omega 字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)