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

猜你喜欢

转载自blog.csdn.net/qq_21746331/article/details/114635919
今日推荐