怎么样在cstring 类型的中英文字符串中判断
一个字符是普通字符还是中文字符的开始?CString str("abc一二三d四");
请给出例子,谢谢~!

解决方案 »

  1.   

    如果下一个字符与上一个字符的索引相差2,你认为它就是中文字符(当然还有其文字)的话。你可以:int nLength=str.GetLength()
    char* pBuffer=str.GetBuffer(nLength);
    char* pNext;
    int nIndex=0;
    while(nIndex<nLenght)
    {
      pNext=::ChatNext((char*)(pBuffer+nIndex));    
      if(pNext==(pBuffer+nIndex+2))
      {
        //*pNext是中文
         nIndex+=2;
      }
     else
      {
         nIndex++;
       }
     
    }
    str.ReleaseBuffer();
      

  2.   

    英文字母的ASCII码大于零,而一个汉字由两部分组成,但两部分的ASCII的值都小于零。
    CString str("abc一二三d四");
    for (int i=0; i<str.GetLength(); i++)
    {
           if (str.GetAt(i) > 0)
                  AfxMessageBox("是字母");
           else
                  AfxMessageBox("是汉字");
    }