在C++中怎么判断一个数组中的是否是汉字?

 我来答
880eVr
2012-12-20
知道答主
回答量:8
采纳率:0%
帮助的人:5.8万
展开全部
// 输入字符串的最大长度const int MAX_LEN = 1024;
// 获取指定字符串中汉字的数量,没有汉字时返回0int GetChineseCharacterCount(char *pStr);int main(){char s1[MAX_LEN]="China, I love you!";
char s2[MAX_LEN]="China, means 中国!";
int ccCnt = 0;
// test string s1 cout<<"Case 1:"<<endl;
ccCnt = GetChineseCharacterCount(s1);
if (ccCnt == 0){
cout<<"No any Chinese character in \""<<s1<<"\""<<endl;}else{cout<<"There are "<<ccCnt<<" Chinese character in \""<<s1<<"\""<<endl;}// test string s2 cout<<"Case 2:"<<endl;
ccCnt = GetChineseCharacterCount(s2);
if (ccCnt == 0){
cout<<"No any Chinese character in \""<<s2<<"\""<<endl;}else{cout<<"There are "<<ccCnt<<" Chinese character in \""<<s2<<"\""<<endl;}return 0;}int GetChineseCharacterCount(char *pStr){int retCnt = 0;int i=0;while(pStr[i]!=0){if(pStr[i] & 0x80){retCnt++;i++; // 因为一个汉字两个字节}i++;}return retCnt;}// 测试结果:
1. 第一个字符的范围-127~-1(包括-127和-1, 也就是说最高位是1);
2. 第2个字符范围: <=-1 或 >=64;
if(pStr[i] & 0x80) // 判断当前字符的最高位是不是1 追问: #include <iostream>
#include <string>
using namespace std;int main(){int n;int k;char c;cin>>n;getchar();while (n--){k=0;while ((c=getchar())!='
'){if (c<0)k++;}cout<<(k/2)<<endl;}return 0;}我还有一个问题 麻烦你了!
这个程序中的 getchar() 可以当一个数组使用 ?为什么运行的时候 赋值给C的时候是一个读出来的?还有就是这个程序也可以计算有多少个汉字,但是这个程序是以判断其数组内的ASCLL是否为负数前面你说第二个字节是<=-1或>=64,这个有点冲突了 ,能举个反例让给我么?谢谢 回答: 1. getchar()这个函数每调用一次,就从标准输出缓冲区中取一个字符,此处是直接到取出的字符为“回车符”的时候结束;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式