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类型的字符。