【C++】:你了解字符函数库cctype吗?

223 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情

1️⃣前言

  • 今天笔记的内容是:字符函数库cctype

2️⃣概述

今天要来复习C++中字符处理库:cctype

C++从C语言继承了一个与处理字符有关的函数软件包,其中的函数可以简化处理字符的工作,例如判断字符是否为大写字母,判断字符是否为数字等等。

要使用这些函数,必须先包含头文件<cctype>(因为函数原型是在该头文件里定义的),如下所示:

#include <cctype>

使用这些简便函数,要比我们自己定义判断语句要简单的多。举个例子,当我们想判断字符是不是字母时,代码可以是:

if ( (ch>='a' && ch<='z') || (ch>='A' && ch<='Z') )

而使用cctype里的函数,可以是:

if ( isalpha(ch) )

可以看出,使用函数isalpha()会更加方便容易。

下面举出cctype中一些常用的函数。


3️⃣字符判断

函数名用于判断传入的参数
isalnum()是否为字母或数字
isalpha()是否为字母
isdigit()是否为数字0~9
ispunct()是否为标点符号
isspace()是否为标准空白字符(比如空格、换行符、回车符等)
iscntrl()是否为控制字符
isgraph()是否为除空格之外的打印字符
islower()是否为小写字母
isupper()是否为大写字母
isprint()是否为打印字符(包括空格)
isxdigit()是否为十六进制数字(即0~9a~fA~F

举个例子:

int main() {
	
	char ch;
	int chars = 0;
	int whitespace = 0;
	int digits = 0;
	int punct = 0;
	int others = 0;
	
	cout<<"请输入一段句子,按零可以结束"<<endl;
	cin.get(ch);
	while(ch != '0') {
		if(isalpha(ch))         //判断字符ch是否为字母
			chars++;
		else if(isspace(ch))    //判断字符ch是否为标准空白字符
			whitespace++;
		else if(isdigit(ch))    //判断字符ch是否为数字 
			digits++;
		else if(ispunct(ch))    //判断字符ch是否为标点符号
			punct++;
		else
			others++;       //其他字符 
		cin.get(ch);
	}
	
	cout<<chars	 	<<"个字母\n"
		<<digits	<<"个数字\n"
		<<whitespace    <<"个标准空白字符\n"
		<<punct		<<"个标点符号\n"
		<<others	<<"个其他符号";
	return 0;
}

运行后效果如下所示:

image.png


4️⃣字符映射

函数名用法
tolower()如果参数是大写字符,则返回其小写,否则返回该参数
toupper() 如果参数是小写字符,则返回其大写,否则返回该参数

举个例子:

#include <iostream>
#include <cctype>
using namespace std;

int main()
{
	char array [50] = {0};
	
	cout<<"请输入一段字符:";
	
	cin >> array;
	
	for (int i = 0; i < sizeof(array); i++) {
		array[i] = toupper(array[i]);
	}
	
	cout<<"转换为大写后是:";
	
	cout<<array;
	
	return 0;
}

运行结果如下:

image.png

5️⃣字符类型

最后,给出ASCII码在0~127之间的字符的字符类型

#include <iostream>
#include <cctype>
using namespace std;

int main() {
    unsigned char c = '\0';
    for(;(int)c <= 127; c++) {
	cout<<"ASCII码为 "<<(int)c<<" 的字符是";
	//判断是否为控制字符
	if(iscntrl(c)) {	
            cout<<"控制字符";
            if (isspace(c)) {
                cout<<",并且是标准空白字符。";
            }		
        }
        //非控制字符
        else  {		
            cout<<c
            	<<( isprint(c) ? ",是打印字符" : "" )
            	<<( islower(c) ? ",是小写字母" : "" )
		<<( isupper(c) ? ",是大写字母" : "" ) 
		<<( isdigit(c) ? ",是一个数字" : "" )
		<<( ispunct(c) ? ",是标点符号" : "" ); 
        }
        cout<<endl;
    }
    return 0;
}

运行结果如下所示:

字符串.png


6️⃣写在最后

好了,本篇笔记就到写这,欢迎大家到评论区一起讨论!