Qt|字符排序以及转化问题
最近用到了字符串的排序问题,主要功能包括:
1:中文字符串排序
2:英文字符串排序
3:数字排序
4:字符串字母转换
那么,接下来我会详细的介绍以上这些功能哦~
1:中文字符串排序
中国汉字博大精深,我们在排序的时候最难得也是中文字符串的排序了。不过,在 Qt 中提供了一个非常方便的类,解决了排序难的问题:QLocale 类
QLocale 类用各种语言在数字和它们的字符串表示之间进行转换。QLocale 在其构造函数中使用语言/国家对进行初始化,并提供类似于 QString 中的数字到字符串和字符串到数字的转换函数。
针对以上类的使用,我们来解决如何对中文字符串排序吧!
中文字符串正排序
构造 QLocale 类,并且指定使用中文格式转换形式
返回一个包含语言名称的 QString 字符串,获取到转换后的信息之后,将字符串信息新型排序
中文字符串倒排序
与正排序有些类似,只是在 qSort 时稍微有些变化,其他都是一致的,这里就不详细介绍了哟~
2:英文字符串排序
该功能我们继续沿用第一个功能的类:QLocale
实现起来写法比较相似,只是将 Chinese 转换成 English
构造英文类型的 QLocale 类信息
返回一个包含语言名称的 QString 字符串,获取到转换后的信息之后,将字符串信息新型排序
3:数字排序
与上述两个功能相比较而言,还是比较简单的,这里我们用 vector 来存储需要排序的数据。
对于这种只存储一个值的容器来说,排序只需要使用 sort 就可以了。
但是,需要注意的一点是:set 容器,使用这个容器的时候还需要自己重载比较运算符,所以,我们一般情况下会使用 Vector 这种顺序存储的容器
假设,存储数据的容器定义为:std::vector<int> vetData
对整型数据正排序
对整型数据倒排序
4:字符串字母转换
对于 CString 的字符串来说,直接一个 API 就可以搞定了,那么我们要是自己转换呢?
虽然功能比较基类,就当自己学习了!
我们知道 ASCII 码中,大写字母与小写字母的值是不一致的。那么,当我们遇到小写字母的值之后,直接替换成大写字母的 ASCII 值,就可以实现字符串的转换了!
今天的功能比较简单,就更新到这里喽~
我是中国好公民 st,一名 C++开发程序媛~
版权声明: 本文为 InfoQ 作者【中国好公民st】的原创文章。
原文链接:【http://xie.infoq.cn/article/1b5b5f1edade8225bd50d4854】。文章转载请联系作者。
评论