【发布时间】:2016-10-04 01:12:19
【问题描述】:
文本存储在std::string中。
如果文本是8位ASCII,那真的很简单:
text.pop_back();
但是如果是 UTF-8 文本呢?
据我所知,标准库中没有我可以使用的 UTF-8 相关函数。
【问题讨论】:
-
你说的“字符”是什么意思?代码单位?码点?字素簇?
-
@polfosol:
std::basic_string应该如何提供帮助?您需要一个 UTF 库来操作 UTF 文本编码。 -
要么找一个不错的 utf8 库,要么学习 utf8 结构并自己实现
-
IterAtor 我认为你错过了@IInspectable 的观点。在 unicode 中,“字符”是一个模棱两可的概念,与编码方法(UTF8、UTF16 等)无关。这就是为什么他们要求澄清你所说的“性格”是什么意思。预警;标准库基本上不支持 unicode。你将不得不求助于一个 unicode 特定的库。
-
@self:我相信你严重低估了 Unicode 的复杂性。 U+0301(结合重音)呢?还是 U+200C(零宽度非连接器)? U+FB00 (latin small ligature ff) 怎么样?每一个都被分配了一个代码点,并且没有一个被认为是一个字符。
标签: c++ string c++11 unicode utf-8