| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1560 人关注过本帖
标题:[求助]怎么样统计汉字?
只看楼主 加入收藏
dyflovexlp
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-8
收藏
 问题点数:0 回复次数:14 
[求助]怎么样统计汉字?
请问怎么样统计文件里的汉字字数?
搜索更多相关主题的帖子: 汉字 统计 
2006-06-08 21:01
行空天马
Rank: 1
等 级:新手上路
威 望:1
帖 子:523
专家分:0
注 册:2006-5-19
收藏
得分:0 
中、英文在一起吗?
哪怎么统计呢?
顶一下吧。

好好学习,天天向上。
2006-06-09 11:50
stylev
Rank: 1
等 级:新手上路
威 望:1
帖 子:136
专家分:0
注 册:2006-5-30
收藏
得分:0 
若全部都是中文....


char str[] = "我喜欢编程!";
chin_len = strlen(str)/2;


若中文、e文杂交...

char str[] = "我喜欢c编程!";
则字符数:

int num = 0;
for (int i = 0; str[i]; i++) {
if (str[i] & 0x80) {
i++;
}
num++;
}


E-mail/MSN: stylev@
2006-06-09 12:03
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 
给你一个例子统计汉字字数
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream infile("D:\\china.txt");
if(!infile)
{
cout<<"cann't open this file"<<endl;
exit(1);
}
char ch;
int i = 0;
while(infile.get(ch))//读取一个字符,即一个字节
i++;
cout<<i/2<<endl;//汉字是两个字节,所以除2
system("pause");
return 0;
}

2006-06-09 12:06
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 
以下是引用stylev在2006-6-9 12:03:15的发言:
若全部都是中文....




若中文、e文杂交...


char str[] = "我喜欢c编程!";

则字符数:


int num = 0;

for (int i = 0; str[i]; i++) {

if (str[i] & 0x80) {//这个表达式解释一下

i++;

}

num++;

}



2006-06-09 12:10
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
我来帮stylev解释下,根据规定,汉字的内码第一字节都是在0x80以上,如:

GBK范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0x80~0xfe

BIG5范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0xa1~0xfe

str[i] & 0x80这个语句是判断第一个字节是否在0x80之上即0x81~0xfe之间,如果是则当前2字节是汉字,否则则不是汉字

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-06-09 14:25
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 
o
xie le

2006-06-09 14:54
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

标点符号呢?不考虑啊?


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-09 17:26
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

[QUOTE]标点符号呢?不考虑啊?[/QUOTE]
可以继续根据内码过滤


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-06-09 17:29
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

知道,我是说大家的代码,没考虑符号算不算字数~


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-09 18:58
快速回复:[求助]怎么样统计汉字?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016349 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved