如何将存储在 uint32_t 中的 Unicode 代码点转换为人类可读的字符串?

问题描述 投票:0回答:1

给定存储在

uint32_t
变量中的 Unicode 代码点值,如何使用 C++ 将其转换为人类可读字符?

更一般地说;给定表示 Unicode 代码点的

uin32_t
值数组 - 可能属于 BMP 之外 - 如何将其转换为人类可读字符的字符串?

我尝试使用

std::string( unicode_arrayIndex.begin(), unicode_str_length)
,但当我在屏幕上打印结果字符串时,它显得很奇怪且不正确。

c++ unicode
1个回答
0
投票

C++ 没有任何内置功能可以帮助您解决此问题。

如果您的目标平台使用 4 字节

wchar_t
类型(可与 UTF-32 一起使用),那么您只需将代码点值按原样放入
std::wstring
中并使用
std::wcout
显示它。

否则,您需要将每个代码点值编码为其UTF-8UTF-16表示形式,然后分别使用

std::(u8)string
std::wstring
显示它。这是假设您的终端甚至可以处理这些编码。

您应该获得一个好的 Unicode 库,或使用特定于平台的 API 来为您处理这些转换。

© www.soinside.com 2019 - 2024. All rights reserved.