Qt 중국어 문자열은 병음으로 정렬됩니다.

목표 기대

정렬되지 않은 중국 도시 이름 문자열을 병음순으로 정렬합니다.
여기에 이미지 설명 삽입


성취하다

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]+") );
}

Supongo que te gusta

Origin blog.csdn.net/locahuang/article/details/126750019
Recomendado
Clasificación