怎样知道一个记事本文档中有多少汉字(500分!!)? 能不能通过字符集或PAGE-CODE的方式获得?请附上详细叙述(或原码),小弟急用(一定给500分)! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果有文件的话,你检查文件的大小不就得了?============================================================================DocWizard http://www.betajin.com/alphasun/index.htm 是不是不包括空格,数字,英文,控制字符?GBK范围:1st byte 2nd byte0x81~0xfe 0x40~0x7e and 0x80~0xfeBIG5范围:1st byte 2nd byte0x81~0xfe 0x40~0x7e and 0xa1~0xfe //效率更高的方法len=文件大小;BYTE *=new BYTE[len];Read(b.len);//num为记事本文档中的汉字数for(int i=0,num=0;i<len;i++){ if(b[i]>'~'){ i++; num++; }} 那就一次全部读取到内存啊. 怕内存分配太大的话就一次读取1024字节.1.打开并按指定字节数(1024)读取文本文件到BUF,以下是对BUF操作2.依次取出BUF的字节 比较该字节是否在0x81~0xFE之间,如果不在该区间则取出下一字节比较. 如果是的话,跳过一个字节取出一字节,查看该字节是否在0x40~0x7e或 0x80~0xfe中,是的话计数加一.要解决边界问题.3.关闭文件.得到总计数,即是汉字的树目 3jaja(3++输入法) 的方法很有趣,但是,怎么就知道那个范围的就是汉字而不是其他字符?特别谢谢fengzi_zhu(疯子) 的方法。 汉字的范围应该在 0x80-0xff(128-256)之间。 第一个汉字大于'~',汉字占两个字节。如此而已。for(int i=0,num=0;i<len;i++){ if(b[i]>'~'){ i++; //汉字占两个字节 num++;//汉字计数器加一 }} 小弟关于汉字个数的问题已经解决。谢谢各位对小弟的支持,有很多方法读很有趣。小弟最终采用了fengzi_zhu(★失业中....) 提出的方法。谢谢了。 socket接收问题 使用CFile的问题 【各位高手!!!】dll中用xmlhttp快,还是用API快? 看看我这个用new关键字分配的内存为什么不能被delete呢? 怎样才能获得一个进程的所有线程?急 寻找Visual C++ 程序模块集锦的光盘资料 CFontDialog 和 CRichEditCtrl 的字体大小的问题 怎样把COM事件SINK 自定义为消息 非静态成员引用必须与特定对象相对的问题 烦劳各位大虾介绍几本学习VC++的好书!我先谢了! MSMQ send message 关于IE前进、后退控制的问题。欢迎讨论!
DocWizard http://www.betajin.com/alphasun/index.htm
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0x80~0xfeBIG5范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0xa1~0xfe
len=文件大小;
BYTE *=new BYTE[len];
Read(b.len);
//num为记事本文档中的汉字数
for(int i=0,num=0;i<len;i++){
if(b[i]>'~'){
i++;
num++;
}
}
2.依次取出BUF的字节
比较该字节是否在0x81~0xFE之间,如果不在该区间则取出下一字节比较.
如果是的话,跳过一个字节取出一字节,查看该字节是否在0x40~0x7e或
0x80~0xfe中,是的话计数加一.要解决边界问题.
3.关闭文件.得到总计数,即是汉字的树目
汉字的范围应该在 0x80-0xff(128-256)之间。
for(int i=0,num=0;i<len;i++){
if(b[i]>'~'){
i++; //汉字占两个字节
num++;//汉字计数器加一
}
}
谢谢各位对小弟的支持,有很多方法读很有趣。
小弟最终采用了fengzi_zhu(★失业中....) 提出的方法。
谢谢了。