C++ 标准库<cctype>

前言

<cctype> 标准库是对于单个字符的处理库,包括字符分类和字符操控两大类函数,这个头文件属于 NTBS (Null-terminated byte strings)的一部分,源自于C语言中的标准库 <ctype.h>

该库中共有14个函数,其函数签名如下:
在这里插入图片描述


字符分类

前 12 个函数属于字符分类的函数,其作用如下:

  • isalnum(ch):当 ch 是字母或者数字时返回一个非零值,否则返回 0。字母或数字包括 26 个大写字母、26 个小写字母和 10 个十进制数字。
  • isalpha(ch):当 ch 是字母时返回一个非零值,否则返回 0。
  • isblank(ch):(C++11) 当 ch 是空字符时返回一个非零值,否则返回 0。空字符包括制表符和空格。
  • iscntrl(ch):当 ch 是控制字符时返回一个非零值,否则返回 0。控制字符包括 ASCII 码为 0x00-0x1F0x7F的字符。
  • isdigit(ch):当 ch 是数字时返回一个非零值,否则返回 0。
  • isgraph(ch):当 ch 是一个有图形表示的字符时返回一个非零值,否则返回 0。有图形表示的字符包括大小写字母,数字,标点。
  • islower(ch):当 ch 是一个小写字母时返回一个非零值,否则返回 0。
  • isprint(ch):当 ch 是一个可打印字符时返回一个非零值,否则返回 0。
  • ispunct(ch):当 ch 是一个标点字符时返回一个非零值,否则返回 0。
  • isspace(ch):当 ch 是一个空白字符时返回一个非零值,否则返回 0。
  • isupper(ch):当 ch 是一个大写字母时返回一个非零值,否则返回 0。
  • isxdigit(ch):当 ch 是一个16 进制数数字字符时返回一个非零值,否则返回 0。包括 1234567890abcdefABCDEF。

对于具体的判定可参考下表:
在这里插入图片描述


字符操控

后 2 个函数属于字符操控的函数,其作用如下:

  • tolower(ch):如果 ch 是大写字母,则返回对应的小写字母;否则原样返回 ch。
  • toupper(ch):如果 ch 是小写字母,则返回对应的大写字母;否则原样返回 ch。

注意事项

可以看到该库是对单个字符的操作库,但是其中所有函数接收的参数和返回值都是 int 类型。因此,在库函数的实现中,对于参数的值既不能表示为 unsigned char,也不等于 EOF 的行为是未定义的。所以为了安全的使用这些函数,实参最好转换为 unsigned char 类型。例如:

// 对字符分类函数的使用
bool my_isalnum(char ch)
{
    return std::isalnum(static_cast<unsigned char>(ch));
}

// 对字符操控函数的使用
char my_toupper(char ch)
{
    return static_cast<char>(std::toupper(static_cast<unsigned char>(ch)));
}

参考资料:cppreference

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值