STL排序功能是否支持按字母顺序排序其中包含UTF-8字符的名称?说出德语/法语的名字?
答案 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位字,或类似的东西)基本上。它没有人物的概念,更不用说编码了。