编程文汇

c++字符串的处理4:utf-8

处理方式

  1. 使用utf8.h做字符集解析
  2. 使用std::string做字符串容器

很简单,直接,而且很强大。这里的关键是utf-8兼容127以下的ascii码,而且u8的编码自身不会部分重合,也就是说少字节字符不会和多字节字符的一部分重复。

优势

主要优势是难度低,工作量小。

  1. std::string 可以使用所有现有标准库,比如格式化、正则表达式匹配、等等。这些库都是现成的。
  2. 大家熟练度高,不容易出错。
  3. 容易扩展。只要是针对std::string 和 char*的算法,基本都能拿来使用。
  4. 存储文件、网络交互时无需转码,可以直接发送u8数据。

缺点

因为u8是变长编码,所以

  1. 不能随机访问字符,但是可以遍历所有字符
  2. 不能直接获得字符串长度。可以获得字节数。也可以通过遍历获得字符数。

如果主要的使用场景不是随机获取字符的话,u8字符串还是值得优先考虑的。