谢谢了!
我用的是unicode。

解决方案 »

  1.   

    CString ss="你好今天真热asdfg";
    CString sE,sC;
    int j=0;
    int k=0;
    int i=0;
    While(i<strlen(ss))
    {
        if(ss[i]>=0xa0)//全角,中文
        {
            sC+=ss[i];
            sC+=ss[i+1];
            i++;
            i++;
            j++;
        }
        else//半角,英文
        {
            sE+=s[i];
            i++;
            k++;
        }
    }CString msg;
    msg.Format("有%d个全角字符:%s。有%d个半角字符:%s",j,sC,k,sE);
    AfxMessageBox(msg);
      

  2.   

    CString ss="你好今天真热asdfg";
    CString sE,sC;
    int j=0;
    int k=0;
    int i=0;
    while(i<(strlen(ss)))
    {
    if(ss[i]>=0xa0 || ss[i]<0)//全角,中文
    {
    sC+=ss[i];
    sC+=ss[i+1];
    i++;
    i++;
    j++;
    }
    else//半角,英文
    {
    sE+=ss[i];
    i++;
    k++;
    }
    }
    CString msg;
    msg.Format("有%d个全角字符:%s。有%d个半角字符:%s", j,sC,k,sE);
    AfxMessageBox(msg);
      

  3.   

    if (char>0x80)
       TRUE:他是汉字
      

  4.   

    哦,这样子可以吗?
    我用的是unicode啊!
    不是ansi能够用上述的方法吗?
    我是一试,:)
      

  5.   

    Unicode的字符集中某一个区域的编码是分配给汉字的,具体哪个区域我不知道,你只能另找资料了。可以肯定,位于这个编码区域的字符一定是汉字,Unicode的判定方法与传统的ANSI方法不同。
      

  6.   

    哦,这样子可以吗?
    我用的是unicode啊!
    不是ansi能够用上述的方法吗?
    我是一试,:)
      

  7.   

    nevergrief的办法是正确的,:)ColderRain的办法,
    if (char>0x80)
       TRUE:他是汉字
    只适用于mbcs,对unicode无效。
    同时感谢sandro的解答
      

  8.   

    对了,nevergrief能够解释一下吗?
    对于0x80我是知道的,对于windows中文(简体)
    中文是从0x80开始的,但是
    if(ss[i]>=0xa0 || ss[i]<0)//全角,中文
    这个是什么意思啊?
    能够解释一下吗?