首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

再请问,取得拼音首字母

2012-03-04 
再请教,取得拼音首字母ccrun(老妖)贴过的代码如下,使用后基本都对,但我遇到了一个问题,汉字串中包含 昇

再请教,取得拼音首字母
ccrun(老妖)贴过的代码如下,使用后基本都对,但我遇到了一个问题,汉字串中包含 "昇 "字,取得的拼音首字母就出现了问题,也用过其他一些代码,遇到这个字也出现了问题,现请各位高手帮忙,谢谢....
贴个老代码:
String   __fastcall   FirstLetterFromHZ(String   strKey)
{
        unsigned   int   uiChineseChar   =   0;
        unsigned   char   ucChar[3]   =   "   ";
        String   strResult;
        memcpy(ucChar,   strKey.c_str(),2);
        uiChineseChar   =   (ucChar[0]   < <   8)   +   ucChar[1];
        if((uiChineseChar   > =   0xB0A1)   &&   (uiChineseChar   <=   0xB0C4))   strResult   =   "A ";
        if((uiChineseChar   > =   0xB0C5)   &&   (uiChineseChar   <=   0xB2C0))   strResult   =   "B ";
        if((uiChineseChar   > =   0xB2C1)   &&   (uiChineseChar   <=   0xB4ED))   strResult   =   "C ";
        if((uiChineseChar   > =   0xB4EE)   &&   (uiChineseChar   <=   0xB6E9))   strResult   =   "D ";
        if((uiChineseChar   > =   0xB6EA)   &&   (uiChineseChar   <=   0xB7A1))   strResult   =   "E ";
        if((uiChineseChar   > =   0xB7A2)   &&   (uiChineseChar   <=   0xB8C0))   strResult   =   "F ";
        if((uiChineseChar   > =   0xB8C1)   &&   (uiChineseChar   <=   0xB9FD))   strResult   =   "G ";
        if((uiChineseChar   > =   0xB9FE)   &&   (uiChineseChar   <=   0xBBF6))   strResult   =   "H ";
        if((uiChineseChar   > =   0xBBF7)   &&   (uiChineseChar   <=   0xBFA5))   strResult   =   "J ";
        if((uiChineseChar   > =   0xBFA6)   &&   (uiChineseChar   <=   0xC0AB))   strResult   =   "K ";
        if((uiChineseChar   > =   0xC0AC)   &&   (uiChineseChar   <=   0xC2E7))   strResult   =   "L ";
        if((uiChineseChar   > =   0xC2E8)   &&   (uiChineseChar   <=   0xC4C2))   strResult   =   "M ";
        if((uiChineseChar   > =   0xC4C3)   &&   (uiChineseChar   <=   0xC5B5))   strResult   =   "N ";
        if((uiChineseChar   > =   0xC5B6)   &&   (uiChineseChar   <=   0xC5BD))   strResult   =   "O ";
        if((uiChineseChar   > =   0xC5BE)   &&   (uiChineseChar   <=   0xC6D9))   strResult   =   "P ";
        if((uiChineseChar   > =   0xC6DA)   &&   (uiChineseChar   <=   0xC8BA))   strResult   =   "Q ";
        if((uiChineseChar   > =   0xC8BB)   &&   (uiChineseChar   <=   0xC8F5))   strResult   =   "R ";


        if((uiChineseChar   > =   0xC8F6)   &&   (uiChineseChar   <=   0xCBF9))   strResult   =   "S ";
        if((uiChineseChar   > =   0xCBFA)   &&   (uiChineseChar   <=   0xCDD9))   strResult   =   "T ";
        if((uiChineseChar   > =   0xCDDA)   &&   (uiChineseChar   <=   0xCEF3))   strResult   =   "W ";
        if((uiChineseChar   > =   0xCEF4)   &&   (uiChineseChar   <=   0xD188))   strResult   =   "X ";
        if((uiChineseChar   > =   0xD1B9)   &&   (uiChineseChar   <=   0xD4D0))   strResult   =   "Y ";
        if((uiChineseChar   > =   0xD4D1)   &&   (uiChineseChar   <=   0xD7F9))   strResult   =   "Z ";
        return   strResult;
}


我的程序中和前面配套的程序段是
AnsiString   __fastcall   GetPYString(AnsiString   InputHZString)
{
      AnsiString   TempString,   ReturnString;
      AnsiString   Str   =InputHZString.Trim();
      for   (int   i=1;   i <=Str.Length();   i++)
      {
            if   (isprint(Str[i]))
            {
                  ReturnString   =   ReturnString   +   Str[i];
            }
            else
            {
                  TempString   +=   Str[i];
                  if   (TempString.Length()   ==   2)
                  {
                        ReturnString   =   ReturnString   +   GetPYFirstChar(TempString);
                        TempString   =   " ";
                  }
            }
      }
      return   ReturnString;
}

bool   __fastcall   In(int   LowPosition,   int   HighPosition,int   Value)
{
    return   ((Value <=HighPosition)&&(Value> =LowPosition));
}


[解决办法]
这个“昇”字的编码是 0x954E 根本就在你的表之外
那张表只能对付 GB2312 内的汉字,表也需要升级那

热点排行