How to convert a Unicode code point to characters in C++ using ICU?

烈酒焚心 提交于 2019-12-06 04:07:34

What you call Unicode number is typically called a code point. If you want to work with C++ and Unicode strings, ICU offers a icu::UnicodeString class. You can find the documentation here.

To create a UnicodeString holding a single character, you can use the constructor that takes a code point in a UChar32:

icu::UnicodeString::UnicodeString(UChar32 ch)

Then you can call the toUTF8String method to convert the string to UTF-8.

Example program:

#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;
}

On a Linux system like Debian, you can compile this program with:

g++ so.cc -o so -licuuc

If your terminal supports UTF-8, this will print an omega character.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!