如何判断一个字符串中含有中文?

在以前的项目中,我就遇到这样一个问题,找遍了api也没有我需要的,所以只能自己写了一个,希望对大家有用!
如果哪里有问题的请各位指出来!

// 判断是否有中文字符  [1/16/2007 weixing.wang]
BOOL HasChineseChar(const CString &destStr)
{
    BOOL bHasChinsesChar = FALSE;
    int nLen = destStr.GetLength();
    unsigned char c1,c2;
    BOOL bFirstSpace = TRUE;

    for(int i=0; i<nLen; i++)
    {
        c1 = destStr[i];

        if((i+1) >= nLen)
        {
            if (bFirstSpace && (c1 == ' ' || c1 == '/t'))
            {
            }
            else
            {
                //strConv += destStr[i];
                bFirstSpace = FALSE;
            }
            break;
        }
        else
        {
            c2 = destStr[i+1];
            if(c1 == 163)  //判断是否为全角字符
            {
                //strConv += TCHAR(c2-128);
                i++;
                bFirstSpace = FALSE;
            }
            else if((int)c1 > 163) //判断是否为文字
            {
                //strConv += (TCHAR)c1;
                //strConv += (TCHAR)c2;
                i++;
                bFirstSpace = FALSE;
                bHasChinsesChar = TRUE;
                break;
            }
            else if((c1 == 161) && (c2 == 161)) //全为空格
            {
                i++;
            }
            else      //如果是半角字符
            {
                if (bFirstSpace && (c1 == ' ' || c1 == '/t'))
                {
                }
                else
                {
                    //strConv += (TCHAR)c1;
                    bFirstSpace = FALSE;
                }
            }//endi
        }
    }

    return bHasChinsesChar;
}

这段code已经经过长时间的测试,应该没有问题放心使用!
本文转载必须通过本人同意,谢谢合作,
以后我会把以前写的一些有意义的代码放到这里分享给大家!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值