C++中判断汉字

C++采用的是ANSI编码,是ASCLL编码的进阶
字符串可以用ANSI,但是char不行
ASCLL编码是DOS时代的东西了
下面来说怎么判断汉字:
给一个函数

bool check(unsigned char c)
{
	if (c > 0X80)
		return true;
	else
		return false;
}

 提示:Unsigned Char可以接受ANSI,光是Char不行
此函数的意思是传入一个字,判断是不是汉字,以地址判断。
完整程序:

#include <iostream>
using namespace std;
bool check(unsigned char c)
{
	if (c > 0X80)
		return true;
	else
		return false;
}
int main()
{
   bool mark = check('c');
	cout << int(mark) << endl;
   return 0;
}

 所以我们可以实现曾经的梦想,在统计字符中加入统计汉字😄

#include <iostream>
#include <string>
#include <vector> 
using namespace std;
bool check(unsigned char c){
    //通过字节码进行判断
    return c >= 0x80;
}
int main()
{
    string str;
    int LowerCase, UpperCase; //大写,小写
	int space = 0;
    int digit, character; //数字,字符
    int chinese = 0; //中文
    digit = character = LowerCase = UpperCase = 0;
    getline(cin, str);
    for (int i = 0; i < str.size(); i++) {
        if (str[i] >= 'a' && str[i] <= 'z')
            LowerCase ++;
        else if (str[i] >= 'A' && str[i] <= 'Z')
            UpperCase ++;
        else if (str[i] >= '0' && str[i] <= '9')
            digit ++;
        else if (check(str[i])){
        	cout << str[i] << endl; 
            chinese ++;
        }
		else if (str[i] == ' ')
			space ++;
        else
            character++;
    }
    printf("大写%d个,小写%d个,数字%d个,字符%d个,汉字%d个,空格%d个\n", UpperCase, LowerCase, digit, character, chinese / 2, space);
    return 0;
}

TIPS:由于中文字符占两个字节,所以最后结果要除以二
谢谢

原文链接: https://www.cnblogs.com/coding365/p/12872266.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++中判断汉字

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/195030

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午6:52
下一篇 2023年2月12日 下午6:52

相关推荐