持续创作,加速成长!这是我参与「掘金日新计划 · 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~9,a~f或A~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;
}
运行后效果如下所示:
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;
}
运行结果如下:
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;
}
运行结果如下所示:
6️⃣写在最后
好了,本篇笔记就到写这,欢迎大家到评论区一起讨论!