在C++中使用 UTF-8 字符串和字符

Working with UTF-8 strings and characters in C++

本文关键字:字符串 字符 UTF-8 C++      更新时间:2023-10-16

我正在做一个逐个字符处理 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