gpt4 book ai didi

c++ - 如何遍历 C++ 中的 unicode 字符?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:36 27 4
gpt4 key购买 nike

我知道要在 C++ 中获得一个 unicode 字符,我可以这样做:

std::wstring str = L"\u4FF0";

但是,如果我想获取 4FF0 到 5FF0 范围内的所有字符怎么办?是否可以动态构建 unicode 字符?我想到的是这样的伪代码:

for (int i = 20464; i < 24560; i++ { // From 4FF0 to 5FF0
std::wstring str = L"\u" + hexa(i); // build the unicode character
// do something with str
}

我如何在 C++ 中做到这一点?

最佳答案

wstring中的wchar_t类型是整型,可以直接使用:

for (wchar_t c = 0x4ff0;  c <= 0x5ff0;  ++c) {
std::wstring str(1, c);
// do something with str
}

尝试对大于 0xffff 的字符执行此操作时要小心,因为根据平台(例如 Windows),它们将不适合 wchar_t。

例如,如果您想查看 Emoticon block在字符串中,您可以创建代理项对:

std::wstring str;
for (int c = 0x1f600; c <= 0x1f64f; ++c) {
if (c <= 0xffff || sizeof(wchar_t) > 2)
str.append(1, (wchar_t)c);
else {
str.append(1, (wchar_t)(0xd800 | ((c - 0x10000) >> 10)));
str.append(1, (wchar_t)(0xdc00 | ((c - 0x10000) & 0x3ff)));
}
}

关于c++ - 如何遍历 C++ 中的 unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7587066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com