Qt文化感知的QString容器类

时间:2010-06-16 17:36:49

标签: qt localization

我们有一个文本分析应用程序,其中被分析的文本可以是任何文化(英语,西班牙语,泰语,阿拉伯语等)。不同的文化对字符串有不同的规则:排序,分词,确定哪些字符是等等。

如何使Qt容器类具有文化感知能力?例如,如果我使用QMap<QString, int>,我希望密钥根据用户指定的文化规则保持排序。 (文化不一定与主机操作系统相同。)同样,它应该根据该文化的规则考虑“重复”。

在.Net中,所有此类容器都可以constructed使用文化感知比较器,例如IEqualityComparer<TKey>。 Qt中是否有等价物?如果没有,那么存在哪些变通方法?

3 个答案:

答案 0 :(得分:2)

正如已经指出的那样,您可以使用std::map,但另一种选择是创建一个LocalizedString类,其中包含QString转化运算符。如果你然后超过和朋友重载,以便他们按照localeAwareCompare()或你自己创作的比较对象,我认为你最终会得到你需要的东西。

答案 1 :(得分:1)

QString为此目的确实有localeAwareCompare。 QMap不将比较函数作为模板参数,但我认为您可以使用STL映射。

答案 2 :(得分:1)

我认为使用QMap有一种简单的方法可以做到这一点。可以使用具有constructorstd::map来指定自定义比较器。