逐个字符迭代Unicode码点
Iterating through Unicode codepoints character by character
我得到了一系列Unicode码点。我真正需要做的是将这些代码点作为一系列字符进行迭代,不是是一系列代码点,并确定每个字符的属性,例如是一个字母,等等。
例如,假设我正在编写一个支持Unicode的文本框,并且用户输入了一个不止一个码点的Unicode字符——例如,"e with diacritic"。我知道这个特定的字符也可以表示为一个代码点,并且可以规范化为这种形式,但我认为这在一般情况下是不可能的。如何实现退格?显然,它不能只是擦除最后一个代码点,因为他们可能刚刚输入了多个代码点。
我如何迭代一堆Unicode码点作为字符?
编辑:ICU提供的Break Iterators似乎正是我所需要的。但是,我没有使用ICU,所以任何关于如何实现我自己的等效功能的参考都是可以接受的答案。另一个编辑:事实证明Windows API确实提供了这个功能。MSDN不太擅长将所有字符串函数放在一个地方。CharNext是我正在寻找的功能
使用ICU库
http://site.icu-project.org/例如:http://icu-project.org/apiref/icu4c/classUnicodeString.html ae3ffb6e15396dff152cb459ce4008f90
是返回字符在字符串中特定字符偏移位置的函数。
UTF8-CPP项目有一堆干净,易于阅读,类似stl的算法来逐码点,逐字符等地迭代Unicode字符串。你可以去看看有没有灵感。
注意,"逐个字符"的方法可能不是很明显。一种简单的方法是迭代标准化形式C的UTF-32字符串,这保证了固定长度的编码。
相关文章:
- Unicode - ICU 库 - 获取 UnicodeString 中的代码点计数
- 字符串到 Unicode,Unicode 到十进制码位 (C++)
- C++Unicode:字节、代码点和图形
- 如何打印 unicode 代码点
- C++函数,用于判断 unicode 点是否为'letter'而不是标点符号数
- 使用 C++ 测试 Unicode 代码点是否在 ISO-8859-5 集中
- 如何在c++中将unicode代码点转换为utf-8
- 如何使用特定的 Unicode 代码点 RTRIM wchar_t
- ASCII 码等同于 Java 中的 unicode 字符
- 匹配 Unicode 代码点的约定,同时遵守 BOM
- 使用json_write()时有两个unicode代码点
- 如何在char16_t字符串文本中编码 Unicode 点 U+10000
- 来自Unicode字符的码点
- 逐个字符迭代Unicode码点
- 虚拟键码到unicode的映射受写入std::cout的影响
- 如何从一个特定的点(时间码)使用Qt播放声音
- 在Mac OS X下,vswprintf在某些unicode码点上失败
- 如何使用ICU将Unicode代码点转换为C++中的字符
- c++在十六进制中检索Unicode码点
- 获取unicode代码点的大写或小写(如uint32_t)