不知怎的,我在谷歌找不到答案。我正在搜索时可能会使用错误的术语。我正在尝试执行一个简单的任务,将表示字符的数字转换为字符本身,如下表所示:http://unicode-table.com/en/#0460
例如,如果我的数字是47(即'\'),我可以在char
中输入47并使用cout
打印它,我将在控制台中看到反斜杠(对于低于256的数字没有问题。
但如果我的号码是1120,那么这个角色应该是'Ѡ'(拉丁语中的欧米茄)。我假设它由几个字符表示(cout
知道在打印到屏幕时转换为'Ѡ'。
如何获得代表'Ѡ'的“几个字符”?
我有一个名为ICU的库,我正在使用UTF-8。
答案 0 :(得分:6)
您所谓的 Unicode编号通常称为代码点。如果您想使用C ++和Unicode字符串,ICU提供 icu :: UnicodeString 类。你可以find the documentation here。
要创建包含单个字符的 UnicodeString ,您可以使用constructor that takes a code point in a UChar32:
icu::UnicodeString::UnicodeString(UChar32 ch)
然后,您可以调用toUTF8String方法将字符串转换为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,则会打印一个欧米茄字符。
答案 1 :(得分:1)
注意:如果您遇到错误:“对icudt67_dat的未定义引用”,则需要链接-licudt,然后您的问题将得到解决。