如何使unicode中汉字按照汉语拼音排序

如题所述

如何将unicode汉字按拼音排序?
有这方面的库吗?

------解决方案--------------------
方法1:转为GB2312
方法2:自定义排序

------解决方案--------------------
先获取汉字首字母,然后按字母排序,以下是主要代码
void GetFirstLetter(char* strName, char* strFirstLetter)
{
TBYTE ucHigh, ucLow;
int nCode;
char strRet;
memset(strFirstLetter, 0, sizeof(strFirstLetter));
int i;
int len = 0;
for (i=0; i < (int)strlen(strName); i++)
{
if ((TBYTE)strName[i] < 0x80)
continue;

ucHigh = (TBYTE)strName[i];
ucLow = (TBYTE)strName[i+1];
if ( ucHigh < 0xa1 || ucLow < 0xa1)
continue;
else
// Treat code by section-position as an int type parameter,
// so make following change to nCode.
nCode = (ucHigh - 0xa0) * 100 + ucLow - 0xa0;

FirstLetter(nCode, strRet);
strFirstLetter[len] = strRet;
i++;
len++;
}
strFirstLetter[len] = 0;
}

void FirstLetter(int nCode, char& strLetter)
{
if(nCode > = 1601 && nCode < 1637) strLetter = 'A ';
if(nCode > = 1637 && nCode < 1833) strLetter = 'B ';
if(nCode > = 1833 && nCode < 2078) strLetter = 'C ';
if(nCode > = 2078 && nCode < 2274) strLetter = 'D ';
if(nCode > = 2274 && nCode < 2302) strLetter = 'E ';
if(nCode > = 2302 && nCode < 2433) strLetter = 'F ';
if(nCode > = 2433 && nCode < 2594) strLetter = 'G ';
if(nCode > = 2594 && nCode < 2787) strLetter = 'H ';
if(nCode > = 2787 && nCode < 3106) strLetter = 'J ';
if(nCode > = 3106 && nCode < 3212) strLetter = 'K ';
if(nCode > = 3212 && nCode < 3472) strLetter = 'L ';
if(nCode > = 3472 && nCode < 3635) strLetter = 'M ';
if(nCode > = 3635 && nCode < 3722) strLetter = 'N ';
if(nCode > = 3722 && nCode < 3730) strLetter = 'O ';
if(nCode > = 3730 && nCode < 3858) strLetter = 'P ';
if(nCode > = 3858 && nCode < 4027) strLetter = 'Q ';
if(nCode > = 4027 && nCode < 4086) strLetter = 'R ';
if(nCode > = 4086 && nCode < 4390) strLetter = 'S ';
if(nCode > = 4390 && nCode < 4558) strLetter = 'T ';
if(nCode > = 4558 && nCode < 4684) strLetter = 'W ';
if(nCode > = 4684 && nCode < 4925) strLetter = 'X ';
if(nCode > = 4925 && nCode < 5249) strLetter = 'Y ';
if(nCode > = 5249 && nCode < 5590) strLetter = 'Z ';
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网