cctype中的函数

看下面表格(此表格出自《C++Primer中文版(第五版)》):

isalnum(a)当a是字母或数字时为真
isalpha(a)当a是字母时为真
iscntrl(a)当a是控制字符时为真
isdigit(a)当a是数字时为真
ispraph(a)当a不是空格但可打印时为真
islower(a)当a是小写字母时为真
isprint(a)当a是可打印字符为真(a是空格或具有可视形式)
isupper(a)当a是大写字母时为真
ispunct(a)当a是标点符号是为真
isspace(a)当a是空白时为真
isxdigit(a)当a是十六进制数时为真
tolower(a)如果a是大写字母,输出对应的小写字母,否则输出原来的a
toupper(a)如果a是小写字母,输出对应的大写字母,否则输出原来的a

### C++ 中 `cctype` 头文件的功能与使用 #### 包含方式 为了在程序中使用 `cctype` 提供的函数,需通过预处理指令将其引入。现代C++推荐的方式如下所示[^1]: ```cpp #include <cctype> ``` 旧版本或兼容模式下也可以采用这种方式[^2]: ```cpp #include <ctype.h> ``` 这两种包含形式功能相同。 #### 字符分类函数 `cctype` 定义了一组用于测试字符属性的宏定义,在C++中这些被实现为内联函数。以下是部分常用的字符分类函数及其作用: - 判断是否为空白字符(包括空格、制表符等) ```cpp int isspace(int ch); ``` - 测试字符是否属于十进制数位 ```cpp int isdigit(int ch); ``` - 验证字符是不是十六进制数字 ```cpp int isxdigit(int ch); ``` - 检查给定字符是否为控制字符 ```cpp intiscntrl(intch); ``` - 探测字符是否构成可打印字符串的一部分(不包括空白),即图形字符 ```cpp int isgraph(int ch); ``` - 确认字符是否既不是字母也不是数字,但仍然是可见字符,比如标点符号 ```cpp int ispunct(int ch); // 根据标准"C"语言环境, 这些是除字母和数字外的所有图形字符[^3] ``` 上述每种检测函数接收一个整型参数并返回一个整数值;如果条件满足则返回非零值表示真,反之则返回0代表假。 #### 字符转换函数 除了提供字符类型的判断之外,还提供了基本的大写转小写以及相反的操作: - 将指定的小写字母转变为对应大写的版本 ```cpp int toupper(int ch); ``` - 把给出的大写字母变成相应的小写字母 ```cpp int tolower(int ch); ``` 这两个函数同样接受整数作为输入,并输出经过变换后的ASCII码值。需要注意的是只有当传入有效的英文字母时才会发生实际变化,其他情况下保持原样不变。 #### 实际应用案例 下面是一个简单的例子来展示如何利用 `cctype` 来过滤掉非字母字符并将剩余的内容统一变为小写: ```cpp #include <iostream> #include <cctype> int main() { std::string input; getline(std::cin, input); for (char& c : input) { if (std::isalpha(c)) { // 只保留字母字符 putchar(std::tolower(c)); // 转换成小写后输出 } } return 0; } ``` 此代码片段会读取一行文本,去除其中所有的非字母成分,并把剩下的全部改成小写字体再显示出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值