Chinaunix首页 | 论坛 | 博客
  • 博客访问: 379438
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:35:34

周星星:严谨一点,OK?
BOOL b = isChineseChar( '8' ); 看看结果;
即使改为
bool isChineseChar(const char ch)
{
    return ( ch<0 ? true : false );
}
我亦认为不妥,并不能简单根据最高位来判断是否为汉字,汉字最高位肯定为一,但最高位为一的不都是汉字。
(发表于2003-5-17 12:55:00)

kenping:是啊,日文,韩文也是这样的。
(发表于2003-5-17 14:53:00)

hangwire:永远接受批评,是有些不严谨,检讨.....一定改正。
(发表于2003-5-17 15:41:00)

nogreat:我觉得应该这样做稍微好一些:
bool isChineseChar(char ch)
{
    unsigned char tmp=(unsigned char)ch;
    if(tmp>=0x80)
        return true;
    return false;
}
但是这样只能判断是否是UNICODE编码不能识别是否为中文!如果想区分中、日、韩文则需要相关内码识别,还是比较复杂的。

(发表于2003-5-18 20:15:00)

yjy2008:判断最高位是1还是0
1 是汉字
0 是字符
(发表于2003-7-9 22:13:00)

sauel:如何将CString 的内容转化为float类型呢????
(发表于2003-8-13 8:18:00)

DengZiGuo:“但是这样只能判断是否是UNICODE编码不能识别是否为中文!如果想区分中、日、韩文则需要相关内码识别,还是比较复杂的。”-->要判断是否是日、韩文好像还要判断代码页吧。只靠看字符能判断出来吗?因此原作者除了
疏忽了一点,把0x80写成了0x08,我认为是对的。标准的GB2312是>=0xa0a0的字符。扩展的可以在0x8080之内吧。如果仅考虑在C里面实现,可以用一句话:

BOOL isChineseChar(const char ch)
{
    return ( ch & 0x80)
}

当然这只能实现半个汉字的判断。如果要实现全部,最好用指针:

BOOL isChineseChar(const char *p)
{
    return ((*p & 0x80) && (p[1] & 0x80))
}

请指正。
(发表于2004-6-15 7:58:00)

seashine:要看是否定义了UNICODE标识符,
如果是ASC的,就比较复杂了,如果是UNICODE的字符串直接判断和0x80的大小
(发表于2004-7-3 0:15:00)

sauel:如何将CString中的数字或者中文提出来?如:CString a=“我们都是中国人123456.3569我们都是好人" ?
(发表于2005-3-4 1:15:00)

hyn590325:你能否告诉我在字符串中如何查找回车换行符。

(发表于2005-6-8 18:26:00)

cheng19long:作者写的程序有问题,怎么不改过来,作者也发个话啊!!!
还精华呢..
误导我们这些新手不太好吧.....
(发表于2006-3-18 0:15:00)

..........................................................................
--------------------next---------------------

阅读(126) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~