STL排序是否支持UTF8?

时间:2011-07-08 15:06:25

标签: c++ sorting stl utf-8

STL排序功能是否支持按字母顺序排序其中包含UTF-8字符的名称?说出德语/法语的名字?

4 个答案:

答案 0 :(得分:8)

这完全取决于您如何存储UTF-8字符以及比较器的外观。 sort函数完全不知道它排序的元素。

但你可能的意思是“...存储在char数组中”然后答案是,因为char将存储给定UTF的单个字节 - 8个字符,而不是逻辑字符。 sort函数对迭代器分隔的元素进行排序。 sort仅在它们引用的迭代器/元素知道它们包含的数据时才起作用。对于编码UTF-8的char数组,情况并非如此。

这里的“正确”解决方案是将UTF-8输入解析为适当的(规范化的)Unicode代码点数组,对其进行排序,然后转换回UTF-8。

答案 1 :(得分:2)

所需要的只是正确的比较功能。您可以在ICU - International Components for Unicode 中找到一个。具体看Collation

答案 2 :(得分:1)

c ++ 0x supports UTF

这与STL无关。

答案 3 :(得分:1)

我假设您参考标准模板库 - 答案是否定的。

没有标准库具有文本字符串类型。有char个数组,但这只是一个字节向量。有std::string,但这是一串字节(或16位字,或类似的东西)基本上。它没有人物的概念,更不用说编码了。