(八十四)字符函数库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类型的字符。


目录
相关文章
|
6月前
|
C语言
C语言转义字符第二篇和strlen库函数的使用
C语言转义字符第二篇和strlen库函数的使用
124 0
|
存储 程序员 编译器
4.1 C++ Boost 字符串处理库
Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质量和性能,并且可以适用于多种不同的系统平台和编译器。Boost库已被广泛应用于许多不同领域的C++应用程序开发中,如网络应用程序、图像处理、数值计算、多线程应用程序和文件系统处理等。
304 0
|
3月前
|
编译器 C++
easyx的有些函数报错?
easyx的有些函数报错?
36 0
|
2月前
|
存储 Serverless C语言
【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数
本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。
135 7
|
3月前
|
编译器 C语言
【C语言小知识】ctype.h系列的字符函数
【C语言小知识】ctype.h系列的字符函数
|
6月前
|
机器学习/深度学习 算法 数据挖掘
C++ 数字世界的奥秘:探索 C++ 中的 numeric、cmath 和 complex 库
C++ 数字世界的奥秘:探索 C++ 中的 numeric、cmath 和 complex 库
210 0
|
6月前
|
编译器 程序员 C语言
C语言进阶教程(include只能包含.h文件吗?)
C语言进阶教程(include只能包含.h文件吗?)
115 0
|
编译器 C语言
C语言之#define以及预处理详讲解
C语言之#define以及预处理详讲解
79 0
|
C语言 C++
C语言标准库(常用函数)详解(含示例)数学公式:math.h
C语言标准库(常用函数)详解(含示例)数学公式:math.h
983 0
|
存储 算法 C语言
C++ <cstring>字符串库函数的自定义实现
C++ <cstring>字符串库函数的自定义实现
163 0