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:由於中文字符占兩個字節,所以最后結果要除以二
謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM