cctype实际上就是一个函数库,他包括多个函数,在调用这些函数的时候,他会自动帮你判断,是否是该函数要求的类型,如果是,返回一个非0 int值(并非固定的)——但可以理解为true值(因为bool后是1),如果不是,返回一个0。
例如:(括号内填变量名,或者用''包含在一起的字符)
isalpha()是查证是否是字母,大写字母返回1,小写字母返回2。
下列表格:
函数名 |
返回值(符合返回非0值) |
isalpha() |
字母 |
isalnum() |
字母或数字 |
iscntrl() |
控制字符(这是什么?) |
isdigit() |
0~9 |
isgraph() |
除空格外的打印字符(这是什么?) |
islower() |
小写字母 |
isprint() |
打印字符(包括空格) |
ispunct() |
标点符号 |
isspace() |
标准空白字符,如空格、换行、tab、水平/垂直制表符等 |
issupper() |
大写字母 |
isxdigit() |
十六进制数字,如0~9,a~f,A~F |
tolower() |
如果是大写字母,返回小写字母,否则返回其参数 |
toupper() |
如果是小写字母,返回大写字母,否则返回其参数 |
如代码:
#include<iostream> #include<cctype> int main() { using namespace std; int a; char b,c; a = 5; b = 'a'; char m; m = 'A'; //isalpha()字母 cout << "isalpha()字母" << endl; cout << m++ << " " << isalpha(a) << endl; //数字5是字母么 cout << m++ << " " << isalpha(b) << endl; //字母a是字母么? cout << m++ << " " << isalpha('A') << endl; //大写字母A的返回值与上面的不同 cout << endl; //isalnum()字母或数字,注意al是字母前2个字母,num是数字前3个字母 cout << "isalnum()字母或数字,注意al是字母前2个字母,num是数字前3个字母" << endl; cout << m++ << " " << isalnum(a) << endl; //5是字母、数字么? cout << m++ << " " << isalnum(b) << endl; //a是字母、数字么? cout << m++ << " " << isalnum('A') << endl; //A是字母、数字么? cout << endl; //isdigit()数字0~9 cout << "isdigit()数字0~9" << endl; cout << m++ << " " << isdigit(a) << endl; //5是数字么? cout << m++ << " " << isdigit(b) << endl; //b是数字么? cout << endl; //islower小写字母 cout << "islower小写字母" << endl; cout << m++ << " " << islower(a) << endl; //5是小写字母么? cout << m++ << " " << islower(b) << endl; //b是小写字母么? cout << m++ << " " << islower('A') << endl; //A是小写字母么? cout << endl; //ispunct()标点符号(注:只能判断英文符号,应该是占1个字节的那种,假如是中文逗号,或者【就会出错 cout << "ispunct()标点符号(注:只能判断英文符号,应该是占1个字节的那种,假如是中文逗号,或者【就会出错" << endl; cout << m++ << " " << ispunct(a) << endl; //5是标点符号么? cout << m++ << " " << ispunct(b) << endl; //b是标点符号么? cout << m++ << " " << ispunct(',') << endl; //,是标点符号么? cout << m++ << " " << ispunct('#') << endl; //#是标点符号么?这个是中文的逗号 cout << m++ << " " << ispunct('[') << endl; //[是标点符号么? cout << m++ << " " << ispunct('=') << endl; //=是标点符号么? cout << endl; //isspace()标准空白字符,包括空格,tab,换行,制表符等 cout << "isspace()标准空白字符,包括空格,tab,换行,制表符等" << endl; cout << m++ << " " << isspace(' ') << endl; //空格是标准空白字符么? cout << m++ << " " << isspace(' ') << endl; //tab是标准空白字符么? cout << m++ << " " << isspace('\n') << endl; //注意,\n是换行,也输出true值 cout << "请直接按回合键,下一行是测试回车键是否是标准空白字符:"; cin.get(c); cout << m++ << " " << isspace(c) << endl; //回车键是标准空白字符么? cout << endl; //issuper()大写字母。 //cout << m++ << " " << issupper(a) << endl; //注:我的编译器VS2015不支持大写字母检测 //isxdigits()十六进制字符,如0~9,a~f,A~F。注意,这里是根据ASCII值,而不是int值判断的 cout << "isxdigits()十六进制字符,如0~9,a~f,A~F。注意,这里是根据ASCII值,而不是int值判断的" << endl; cout << m++ << " " << isxdigit('a') << endl; //字符a是十六进制字符么? cout << m++ << " " << isxdigit(a) << endl; //5是十六进制字符么?注意,这里的a是int变量,不是char类型 cout << m++ << " " << isxdigit('5') << endl; //char 5是十六进制字符么? cout << m++ << " " << isxdigit(b) << endl; //b是十六进制字符么? cout << m++ << " " << isxdigit('F') << endl; //b是十六进制字符么? cout << endl; //tolower()输入大写,返回小写字母,否则返回大写字母。注意,返回的是ASCII值 cout << "tolower()输入大写,返回小写字母,否则返回大写字母。注意,返回的是ASCII值" << endl; cout << m++ << " " << tolower(b) << endl; //a,注:字符a的ASCII值是97 cout << m++ << " " << tolower(a) << endl; //5,返回参数5 cout << m++ << " " << tolower('A') << endl; //A,返回小写字母ASCII值 cout << m++ << " " << (char)tolower('A') << endl; //返回char类型 cout << endl; //toupper()输出小写返回大写字母 cout << "toupper()输出小写返回大写字母" << endl; cout << m++ << " " << toupper(b) << endl; //a,注:字符a的ASCII值是97 cout << m++ << " " << toupper(a) << endl; //数字5 cout << m++ << " " << toupper('a') << endl; // cout << m++ << " " << (char)toupper('a') << endl; //char类型 cout << endl; system("pause"); return 0; }
输出:
isalpha()字母 A 0 B 2 C 1 isalnum()字母或数字,注意al是字母前2个字母,num是数字前3个字母 D 0 E 2 F 1 isdigit()数字0~9 G 0 H 0 islower小写字母 I 0 J 2 K 0 ispunct()标点符号(注:只能判断英文符号,应该是占1个字节的那种,假如是中文逗号, 或者【就会出错 L 0 M 0 N 16 O 16 P 16 Q 16 isspace()标准空白字符,包括空格,tab,换行,制表符等 R 8 S 8 T 8 请直接按回合键,下一行是测试回车键是否是标准空白字符: U 8 isxdigits()十六进制字符,如0~9,a~f,A~F。注意,这里是根据ASCII值,而不是int值判 断的 V 128 W 0 X 128 Y 128 Z 128 tolower()输入大写,返回小写字母,否则返回大写字母。注意,返回的是ASCII值 [ 97 \ 5 ] 97 ^ a toupper()输出小写返回大写字母 _ 65 ` 5 a 65 b A 请按任意键继续. . .
总结:
①返回的值不确定,但如果符合条件,返回值为非0值是确定的,不符合条件,返回值为0。
②toupper()和tolower()返回的是ASCII值,需要用char进行强制转换,才能显示char类型的字符。