Qt中文字符串按照拼音排序

该博客介绍了一个用于对无序中文城市名称进行拼音排序的C++实现。通过使用QMap和QTextCodec,首先将城市名转换为拼音,然后进行排序。isContainsHz函数用于检测字符串中是否包含汉字。最终,排序后的城市名称存储在QStringList中。
摘要由CSDN通过智能技术生成

目标期望

对一串无序的中文城市名称按照拼音顺序排序。
在这里插入图片描述


实现

void sort()
{
	QStringList stringList;
    stringList<<"广州"<<"成都"<<"北京"<<"上海"<<"杭州"<<"洛阳"<<"中国";

    QMap<QByteArray,QString> barryMap;
    QTextCodec* codec = QTextCodec::codecForName("GBK");
    if(codec)
    {
       for(int i=0; i<stringList.count(); i++)
       {
           QString text = stringList.at(i);
           if( isContainsHz(text))
           {
               QByteArray barr = codec->fromUnicode(text);
               barryMap.insert(barr, text);
           }
           else
           {
               barryMap.insert(text.toLatin1(), text);
           }
       }
    }
    stringList.clear();
    stringList = barryMap.values();
}

bool isContainsHz(const QString text)
{
    return text.contains( QRegExp("[\\x4e00-\\x9fa5]+") );
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值