C++ 中cctype头文件的使用
头文件cctype(字符处理库)中定义了有关字符判断与处理的库函数,使用前要包含头文件:
#include <cctype>
using namespace std;
cctype头文件中的常用函数列表如下:
函数名称 返回值
isalnum() 如果参数是字母数字,即字母或者数字,函数返回true
isalpha() 如果参数是字母,函数返回true
iscntrl() 如果参数是控制字符,函数返回true
isdigit() 如果参数是数字(0-9),函数返回true
isgraph() 如果参数是除空格之外的打印字符,函数返回true
islower() 如果参数是小写字母,函数返回true
isprint() 如果参数是打印字符(包括空格),函数返回true
ispunct() 如果参数是标点符号,函数返回true
isspace() 如果参数是标准空白字符,如空格、换行符、水平或垂直制表符,函数返回true
isupper() 如果参数是大写字母,函数返回true
isxdigit() 如果参数是十六进制数字,即0-9、a-f、A-F,函数返回true
tolower() 如果参数是大写字符,返回其小写,否则返回该参数
toupper() 如果参数是小写字符,返回其大写,否则返回该参数
cctype头文件中的常用函数功能主要分为以下两类:
功能一:字符测试
1> 函数原型均为int isxxxx(int)
2> 参数为int, 任何实参均被提升成整型
3> 只能正确处理处于[0, 127]之间的值
如某个字符是否为大写,用isupper()如果参数是大写字母,函数返回true, 还有像isalnum(),如果参数是字母数字,即字母或者数字,函数返回true.下面我们通过一个小示例来查看输出结果:
cout << "iis : " << isupper(‘b‘) << "\n";
输出:i is : 0
如果把参数改为‘B‘,则会输出:i is : 1
功能二:字符映射
1> 函数原型为int toxxxx(int)
2> 对参数进行检测, 若符合范围则转换, 否则不变
inttolower(int); ‘A‘~‘Z‘ ==> ‘a‘~‘z‘
int toupper(int); ‘a‘~‘z‘ ==> ‘A‘~‘Z‘
以下程序用循环判断输出ASCII从0~127之间的字符类型
//用循环判断ASCII从0~127之间的字符类型 /* cctype中的常用函数 函数名称 返回值 isalnum() 如果参数是字母数字,即字母或者数字,函数返回true isalpha() 如果参数是字母,函数返回true iscntrl() 如果参数是控制字符,函数返回true isdigit() 如果参数是数字(0-9),函数返回true isgraph() 如果参数是除空格之外的打印字符,函数返回true islower() 如果参数是小写字母,函数返回true isprint() 如果参数是打印字符(包括空格),函数返回true ispunct() 如果参数是标点符号,函数返回true isspace() 如果参数是标准空白字符,如空格、换行符、水平或垂直制表符,函数返回true isupper() 如果参数是大写字母,函数返回true isxdigit() 如果参数是十六进制数字,即0-9、a-f、A-F,函数返回true tolower() 如果参数是大写字符,返回其小写,否则返回该参数 toupper() 如果参数是小写字符,返回其大写,否则返回该参数 */ #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<<(iscntrl(c)?"控制字符 ":""); cout<<(isspace(c)?"标准空白字符,如空格、换行符、水平或垂直制表符":""); } else //非控制字符 { cout<<c<<" "; cout<<(isprint(c)?"打印字符(包括空格) ":""); cout<<(isgraph(c)?"除空格之外的打印字符 ":""); cout<<(isalnum(c)?"字母数字 ":""); cout<<(isalpha(c)?"字母 ":""); cout<<(islower(c)?"小写字母 ":""); cout<<(isupper(c)?"大写字母 ":""); cout<<(isdigit(c)?"数字(0-9) ":""); cout<<(isxdigit(c)?"十六进制数字(0-9,A-F,a-f) ":""); cout<<(ispunct(c)?"标点符号 ":""); } cout<<endl; //cout<<"============================================="<<endl; } return 0; }
运行结果