到sina的程序员之家问徐大侠,或是中文平台的狮子

解决方案 »

  1.   

    it is simple 
    judge the highest bit ,if 1 then chinese
      

  2.   

    if(char[i]>80)
    then 汉字
      

  3.   

    oldcat说得对,查看他的最高位是不是为一,是一那就是后面的两个字节表示一个汉字。
      

  4.   

    LPCTSTR str = "程序员大aa本bb营"
    LPTSTR pointer = str;
    while ( *pointer!=0)
    {
        if (IsDBCSLeadByte(*pointer))
        {
          pointer +=2;
        } else {
          pointer +=1;
        }
    }
      

  5.   

    CString LeftTChar(CString kk, int length, int pos,int &back)
    {
    long  size = kk.GetLength();
    CString NullStr("") ;
    if (!size || pos>size || pos<0) return NullStr;
       
    char *m_newBuffer = new char [size];
        LPSTR newTempPtr = m_newBuffer;
    char TCharbuf[255];
        //以防止将一半汉字分为两行
    unsigned short halfChinese=0;
    int i=pos;
    while(i<size && i-pos<length)
    {
    *newTempPtr = kk.GetAt(i);
    //大于0xa1的字节为汉字字节
    if((unsigned char)*newTempPtr >= 0xa1)
    halfChinese++;
    TCharbuf[i-pos]=*newTempPtr++;
    i++;
    }
    if (halfChinese%2==1)
    {TCharbuf[i-pos-1]='\0';back=-1;}
    else 
    {TCharbuf[i-pos]='\0';back=0;}

    CString tt;
    tt.Format("%s",TCharbuf); return tt;
    }int back;
    CString kk;
    kk="张学d有"
    LeftTChar(kk,6,0,back);