关于cctype头⽂件⾥的⼀些函数
刚刚在头⽂件那⼀段中也提到,cctype本质上是C语⾔标准函数库中的头⽂件 #include
<ctype.h> ,其实并不属于C++新特性的范畴,在刷PAT⼀些字符串逻辑题的时候也经常⽤到,但是很多⼈似乎不了解这个头⽂件中的函数,所以在这⾥单独提⼀下~
可能平时我们判断⼀个字符是否是字⺟,可能会写:
char c;
cin >> c;
if (c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') {
cout << "c is alpha";
}
但是在cctype中已经定义好了判断这些字符应该所属的范围,直接引⼊这个头⽂件并且使⽤⾥⾯的函数判断即可,⽆需⾃⼰⼿写(⾃⼰⼿写有时候可能写错或者漏写~)
不仅仅能判断字⺟,还能判断数字、⼩写字⺟、⼤写字⺟等~C++官⽅⽂档中对这些函数归纳成了⼀个表格, 【C++】isalpha、islower、isupper、isalnum、isblank、isspace函数头⽂件
总的来说常⽤的只有以下⼏个:
isalpha 字⺟(包括⼤写、⼩写)
islower(⼩写字⺟)
isupper(⼤写字⺟)
isalnum(字⺟⼤写⼩写+数字)
isblank(space和\t)
isspace(space、\t、\r、\n)
isdigit (是否是数字)
特别说下 如果是 string类型的字符 或者是 char类型的字符 不需要用下面的写法,也不能这样用
string str;
cin >> str;
for(int i = 0;i < str.size();i++){
if(isdigit(str[i] - '0')){
cout << "OK " << endl;
}
}
直接这样写就行:
for( j= 0;j < id.size() - 1;j++){
if(isdigit(id[j])){
sum += (id[j] - '0') * arr[j];
}else{
cout << id << endl;
break;
}
}
cctype中除了上⾯所说的⽤来判断某个字符是否是某种类型,还有两个经常⽤到的函数:tolower和toupper,作⽤是将某个字符转为⼩写或者⼤写,这样就不⽤像原来那样⼿动判断字符c是否是⼤写,
如果是⼤写字符就 c = c + 32; 的⽅法将c转为⼩写字符啦~这在字符串处理的题⽬中也是经常⽤到:
#include <iostream>
#include <cctype>
using namespace std;
int main() {
char c;
cin >> c;
if (isalpha(c)) {
cout << "c is alpha";
}
return 0;
}
char c = 'A';
char t = tolower(c); // 将c字符转化为⼩写字符赋值给t,如果c本身就是⼩写字符也没有
关系~
cout << t; // 此处t为'a'