在C++中使用 UTF-8 字符串和字符
Working with UTF-8 strings and characters in C++
我正在做一个逐个字符处理 utf-8 字符串的项目,但是我无法找到一种在 C++ 中以这种方式处理 UTF-8 字符串的方法。
我需要的是:
字符串- 必须是 UTF-8,因为字符串不限于英文字母。
- 按原样存储和检索它们是不够的,因为我将逐个字符处理它们并处理它们。
- 必须逐个字符访问它们,并能够将它们与其他 UTF-8 字符进行比较。
非常欢迎任何C++(无论 98/11/14(功能或库的建议。
不使用增强的附加分数。我倾向于在没有外部依赖的情况下开发工具。
C++因对开箱即用的Unicode支持非常差而臭名昭著。因此,最好的选择是使用ICU或boost之类的库。
友情忠告:
我倾向于在没有外部依赖的情况下开发工具
你需要证明这个陈述的合理性,否则,如果这是你的任意规则,你就会限制自己。库和语言一样是工具。选择使用的工具需要分析,并将好处与缺点进行权衡。
你的意思是,使用代码点(而不是实际的char
- 即字节(?对上述答案的一个小补充。我建议您首先阅读有关 UTF-8 工作原理的规范,然后阅读"UTF-8 Everywhere"宣言,并查看此处 - 这是如何构建 UTF-8 代码点迭代器的一个很好的例子。了解东西的实际工作原理总是很好的,特别是如果它是软件的重要组成部分。虽然你肯定会最终使用ICU:-(
您可以使用Wide Chars
(或Multibytes
(来处理Unicode
https://www.geeksforgeeks.org/wide-char-and-library-functions-in-c/中总结了C++库函数的Wide Chars
另请参阅国际化标准,如I18N 和 cfhttps://www.cprogramming.com/tutorial/unicode.html
相关文章:
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 尝试将字符串/字符转换为整数会产生意外结果
- 为什么没有访问所有字符串字符?
- 将子字符串字符从字符串值转换为 int,然后将其分配给 int 变量
- 如何将字符串字符与结构数组进行比较?
- 将单个字符串/字符输入串行监视器
- 读取字符串字符时出错 - 对于数组中的字符串值
- C++ C 样式字符串/字符数组的大小 - 优化
- 读取字符串字符时出错
- C++ 使用 Strtok 读取字符串字符时出错
- 如何将 int 数组的 1 个元素转换为字符串/字符
- 在另一个字符串中逐个复制字符串字符
- 将字符串字符映射到矢量
- MBED RTOS将Float转换为字符串/字符阵列
- 如何使用字符串字符数组中的 ++ 运算符访问下一个字符串
- 如何比较C++中的单个字符串字符?
- 内部字符串/字符如何在 int 和 float 中存储
- 将十六进制转换为可打印的字符串/字符
- wcscpy_s后读取字符串字符时出错
- 检查字符串字符和长度