gpt4 book ai didi

linux - 在 C++ 中使用 Unicode (UTF-8)

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:21 25 4
gpt4 key购买 nike

目前,我必须在 C++ 11(Linux 环境)中处理 Unicode。UTF-8 用作默认编码。我需要的任务:

  • 替换。
  • 正则表达式
  • 遍历 UTF-8 字符串。我不知道使用 std::string 和“for (character c : s)”是否会做我想做的事,因为每个字符都必须是 unicode 字符。例如ế是一个字符,mão是一个包含3个字符的单词
  • 子字符串。
  • 用 unicode 字符连接子字符串或连接 unicode 字符。
  • 长度。
  • 修剪。
  • 读写文件。

我应该使用什么库来获得最佳结果?

非常感谢。期待很快收到您的来信。

最佳答案

对于正则表达式/替换/搜索功能,我以前使用过 PCRE。这是为使用 UTF-8 字符串而设计的。您可以使用 STL 正则表达式,但不能以任何可移植的方式使用。 (尤其是 Windows 不支持 UTF-8 语言环境。)

遍历 UTF-8 字符串比您描述的还要复杂,如果您需要支持组合标记或零宽度连接符!你写的 é 是一个字符,但它可能是两个 Unicode 代码点:拉丁文小写字母 e + 上面的尖音符组合。如果您只是想遍历代码点,您可以使用标准库中的 mbtowc()std::codecvt::do_in。如果您需要遍历字素,最便携的方法是使用 ICU.

常规的字符串连接应该可以工作,标准库有 mblen() 用于长度。这不是完全可移植的,因为多字节编码不一定是 UTF-8(尽管有一组标准的转换函数)。

关于linux - 在 C++ 中使用 Unicode (UTF-8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53662736/

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