关于字数统计
我把一段文字放在了一个CString类的变量里。
如何统计出其中中文字符的个数和非中文字符的个数??(我没使用UNICODE编译选项)
问题点数:100、回复次数:8Top
1 楼bohut(●伯虎● )回复于 2004-09-03 09:49:57 得分 0
CString str="12345一二三四五abcde";
int Lenth = m_str.GetLength();
int nELenth = 0; //非中文字符数
int nCLenth = 0; //中文字符数
int nTotalLenth = 0;//总共字符数
for(int i=0;i<Lenth;i++)
{
char c = str.GetAt(i);
//是中文字符
if(c<0||c>255)
continue;
//是非中文字符
else
nELenth ++;
}
//计算中文字符数,每个中文字符占两个字节
nCLenth = (Lenth-nELenth)/2;
nTotalLenth = nCLenth + nELenth;
CString strTotal,strNotChinese,strChinese;
strTotal.Format("总共字符数:%d",nTotalLenth);
strNotChinese.Format("非中文字符数:%d",nELenth);
strChinese.Format("中文字符数:%d",nCLenth);Top
2 楼bohut(●伯虎● )回复于 2004-09-03 09:51:41 得分 25
上述代码中的第二句改成:
int Lenth = str.GetLength();Top
3 楼microyzy(人不在牛,分高就行;分不在高,人牛也行)回复于 2004-09-03 09:51:45 得分 0
好像很难啊,128以下的算ascii字符,以上的两个字节一块算
似乎也不行,还是楼下高见吧Top
4 楼microyzy(人不在牛,分高就行;分不在高,人牛也行)回复于 2004-09-03 09:51:58 得分 15
好像很难啊,128以下的算ascii字符,以上的两个字节一块算
似乎也不行,还是楼下高见吧Top
5 楼laiyiling(陌生人[MVP])回复于 2004-09-03 09:56:26 得分 35
http://search.csdn.net/Expert/topic/2499/2499510.xml?temp=.7076532Top
6 楼bobob(静思)回复于 2004-09-03 09:58:34 得分 15
中文的编码值是负数,即最高位是1,且占两个字节。Top
7 楼flyelf(空谷清音)回复于 2004-09-03 10:01:30 得分 10
用stl把count_ifTop
8 楼monstersky()回复于 2004-09-03 16:46:58 得分 0
呵呵,其实是我懒了。查查过去的帖子不就成了。
不过还是谢谢大家,同时也希望大家看看那个帖子。bobob,不知道那个关于GBK的说法对不对,有时间我会查一查。伯虎,谢谢你的代码。其实你改那个m_str大家也明白,所以更要感谢的是你的认真,flyelf(飞翔的精灵??),stl的算法吗?我回去看看手册。
microyzy,俺也有同样的困惑,还是知道的东西少阿。
最后是laiyining,没什么好说的,你给我解决了这个问题。
谢谢诸位
结贴。Top




