CString test;1、如何判断test[100]是否一个中文?2、如何判断test[100]是否一个英文?3/4、非中非英字符?俺分数池如同云南情况,刚好能发帖,今天不close帖子,过了今晚接了分适当补上,嘿嘿~~

解决方案 »

  1.   

    把test[100]装到另外一个单独的变量里,直接分析这个变量行不?
      

  2.   

    这和CString没什么关系了,完全是字符串判断的技巧,找专门的类做,或者自己解析
      

  3.   

    (iChar > 127) || (iChar < 0)  为中文
      

  4.   

    以下是一个针对一串字符  逐个判断其内文字类型的程序:
       
    int m_nCount = 0;
    CString m_strBuff = test;//先把test数组内的数据丢入一个CString变量内
    for(i=0; i<m_strBuff.GetLength(); i++)
    {
            if (m_nCount<m_strBuff.GetLength())
    {
                CString str = m_strBuff.Left(m_nCount+1);//取出左部的文本
        char ch = m_strBuff.GetAt(m_nCount);//移动并定位
            //如果不是ASCII字符则应把字符计数加2,否则加1
    if (ch < 0 || ch >256)  
    m_nCount++;//不是有效ascii字符,考虑是否中文
    m_nCount++;//中文一个字 占用2个字节

    }}
      

  5.   

    VC 判断CString字符串中各位是数字,大小写字母,符号,汉字。(UNICODE和ANSI)http://www.cnblogs.com/aoyihuashao/archive/2009/12/23/1630701.html
      

  6.   

    int m_nCount = 0;
    CString m_strBuff = test;//先把test数组内的数据丢入一个CString变量内
    for(i=0; i<m_strBuff.GetLength(); i++)
    {
            if (m_nCount<m_strBuff.GetLength())
        {
                CString str = m_strBuff.Left(m_nCount+1);//取出左部的文本
            char ch = m_strBuff.GetAt(m_nCount);//移动并定位
            //如果不是ASCII字符则应把字符计数加2,否则加1
            if (ch < 0 || ch >256)  
                m_nCount++;//不是有效ascii字符,考虑是否中文
            m_nCount++;//中文一个字 占用2个字节
            
        }}
      

  7.   

    自己慢慢判断吧,没什么好办法。
    nn年前弄过一个叫什么Lisp的,叫表处理语言,做AI用的。专门处理串,现在人们都不知道有这个东西了,呵呵。
      

  8.   

    CString str =  L"0123abc雲中鶴+-*ほニホ";
        CString shuzi,biaodianfuhao,hanzi,daxiezimu,xiaoxiezimu;
     
        for (int i = 0 ; i <str.GetLength();i++)
        {
            int unicode = (int)str.GetAt(i);
            if (unicode <= '9' && unicode >= '0')
            {
                shuzi += str.GetAt(i);
            }
            else if (unicode <= 'z' && unicode >= 'a')
            {
                xiaoxiezimu += str.GetAt(i);
            }
            else if (unicode <= 'Z' && unicode >= 'A')
            {
                daxiezimu += str.GetAt(i);
            }
            else if (unicode > 255)
            {
                hanzi += str.GetAt(i);
            }
            else
            {
                biaodianfuhao += str.GetAt(i);
            }
        }
     
     
     
    //多字节字符集
     
    CString str;  
        str = "0123abc雲中鶴+-*ほニホ";  
        int   lens;  
        lens = (int)strlen(str);  
     
        unsigned char hanzi[20],daxiezimu[20],xiaoxiezimu[20],shuzi[20],biaodianfuhao[20];
     
        unsigned char ansi;  
        int hanzi_len,daxiezimu_len,xiaoxiezimu_len,shuzi_len,biaodianfuhao_len;
        hanzi_len=daxiezimu_len=xiaoxiezimu_len=shuzi_len=biaodianfuhao_len=0;
     
        for(int i=0;i<lens;i++)
        {  
            ansi = str[i];  
            if (ansi <= '9' && ansi >= '0')
            {
                shuzi[shuzi_len++] = ansi;
            }
            else if (ansi <= 'z' && ansi >= 'a')
            {
                xiaoxiezimu[xiaoxiezimu_len++] = ansi;
            }
            else if (ansi <= 'Z' && ansi >= 'A')
            {
                daxiezimu[daxiezimu_len++] = ansi;
            }
            else if (ansi > 127)
            {
                hanzi[hanzi_len++] = ansi;
                hanzi[hanzi_len++] = str[++i];
            }
            else
            {
                biaodianfuhao[biaodianfuhao_len++] = ansi;
            }
        
        }  
        shuzi[shuzi_len] = '\0';  
        daxiezimu[daxiezimu_len] = '\0';
        xiaoxiezimu[xiaoxiezimu_len] = '\0';
        biaodianfuhao[biaodianfuhao_len] = '\0';
        hanzi[hanzi_len] = '\0';
      

  9.   


    //判断CString中是否含有数字和/或英文等基本ASCII字符(ASCII值0~127)之外的字符
    BOOL CStringIsHaveCHNchar(CString strChars)
    {
    BYTE bsinglechar;
    BOOL bExist = FALSE;
    int len = strChars.GetLength();
    for(int i=0;i< len;i++)
    {
    bsinglechar = (BYTE)strChars[i];
    if(bsinglechar > 127) //127d = 0x7F
    {
    bExist = TRUE;
    return bExist;//含有英文字符和/或数字之外的字符
    }
    }
    return bExist;//只有英文字符和/或数字字符
    }