(八十四)字符函数库cctype

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值