hur.cn - 华软网

 热门搜索

MFC中如何判定CString中是否有中文和特殊字符

  作者:未知    来源:网络    更新时间:2011/9/28
    假如有CString  Cstr1= "我们的";
                   Cstr2 = "as我们的";
                   Cstr3 = "11我的的";
                   Cstr4 = "@~%^$&wn我们的";
现在我想实现当字符串中为字母和数字才合法返回TURE,否者返回FALSE;
我现在实现的方法如下
      BOOL HasChineseChar(CString Cstr)
{
int nLen = Cstr.GetLength();
unsigned char ch1, ch2;
for(int i = 0; i != nLen; ++i)
{
ch1 = Cstr[i];
ch2 = Cstr[i+1];
if (ch1 < 0xA0)
{
return TRUE;
}
else
{
return FALSE;
}
}
return FALSE;

}
只能判定出以下情况(中文XXX中文)(中文XXXX)(中文XXXX)的情况啊 大侠们帮帮忙
---华软 网友回答---
for(int i = 0; i != nLen; ++i)
{
ch1 = Cstr[i];
ch2 = Cstr[i+1];
if (ch1 < 0xA0)
{
return TRUE;
}
else
{
return FALSE;
}

return FALSE;


你只拿了前面的两个字节来判断而已。。。
把后面所有的内容都丢掉了!
---华软网友回复---
这个容易,把字母和数字之外的都判断为非法就行了,如果判断是否是中文,那范围很大,反而不容易。

---华软网友回复---
改成这样吧:


BOOL HasChineseChar(CString Cstr)
{
int nLen = Cstr.GetLength();
unsigned char ch1, ch2;
for(int i = 0; i != nLen; ++i)
{
ch1 = Cstr[i];
if (ch1 >= 0xA0)
{
return TRUE;
}
else
{
continue;
}

return FALSE;


}
---华软网友回复---
引用 1 楼 hedengxiang2011 的回复:
for(int i = 0; i != nLen; ++i)
{
ch1 = Cstr[i];
ch2 = Cstr[i+1];
if (ch1 < 0xA0)
{
return TRUE;
}
else
{
return FALSE;
}

return FALSE;


你只拿了前面的两个字节来判断而已。。。
把后面所有的内容都丢掉了!
大侠 我是在for循环里做的判断 怎么出现的你说的 你只拿了前面的两个字节来判断情况的  小白再次请教咯!

---华软网友回复---
确切的说,你只判断了第一个字符。。。
一个函数遇到return语句之后,就返回了,不再往下执行,要不然你就自己调试看看吧。。。

if (ch1 < 0xA0)
{
return TRUE;
}
else
{
return FALSE;
}

当i为0时,要么返回true要么返回false,然后这个函数就结束了!
---华软网友回复---
谢谢大家了!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。