
<cctype> 是 C++ 标准库中的头文件,提供了一组用于字符处理的函数和宏定义。这些函数主要用于判断和转换字符,以及执行字符分类的操作。
isalnum(int c): 判断字符 c 是否是字母或数字。isalpha(int c): 判断字符 c 是否是字母。isdigit(int c): 判断字符 c 是否是数字。islower(int c): 判断字符 c 是否是小写字母。isupper(int c): 判断字符 c 是否是大写字母。isspace(int c): 判断字符 c 是否为空白字符(空格、换行、制表符等)。iscntrl(int c): 判断字符 c 是否是控制字符。ispunct(int c): 判断字符 c 是否是标点符号。isxdigit(int c): 判断字符 c 是否是十六进制数字字符。tolower(int c): 将大写字母 c 转换为相应的小写字母,其他字符保持不变。toupper(int c): 将小写字母 c 转换为相应的大写字母,其他字符保持不变。tolower(int c) 和 toupper(int c) 还可以用作宏,接受字符而不是整数。int 表示)。int 类型),函数会在执行前先将其转换为 unsigned char 类型。#include <iostream>
#include <cctype>
int main() {
char c = 'A';
if (isupper(c)) {
std::cout << c << " is an uppercase letter." << std::endl;
std::cout << "Converting to lowercase: " << static_cast<char>(tolower(c)) << std::endl;
} else {
std::cout << c << " is not an uppercase letter." << std::endl;
}
c = '5';
if (isdigit(c)) {
std::cout << c << " is a digit." << std::endl;
} else {
std::cout << c << " is not a digit." << std::endl;
}
return 0;
}c 是否是大写字母(通过 isupper(c) 函数)。如果是,打印相应的信息,并将其转换为小写字母打印出来。c 是否是数字字符(通过 isdigit(c) 函数)。isalnum(int c)isalnum(int c) 函数用于判断字符 c 是否是字母或数字。
#include <cctype>
int isalnum(int c);c:要检查的字符,以 int 类型表示。通常传入字符的 ASCII 值或字符字面量。c 是字母(小写或大写)或数字('0' 到 '9'),函数返回一个非零值(通常是1)。c 不是字母或数字,即是标点符号、空白字符或其他特殊字符,则返回0。#include <iostream>
#include <cctype>
int main() {
char c = 'A';
if (isalnum(c)) {
std::cout << c << " is alphanumeric." << std::endl;
} else {
std::cout << c << " is not alphanumeric." << std::endl;
}
c = '5';
if (isalnum(c)) {
std::cout << c << " is alphanumeric." << std::endl;
} else {
std::cout << c << " is not alphanumeric." << std::endl;
}
c = '@';
if (isalnum(c)) {
std::cout << c << " is alphanumeric." << std::endl;
} else {
std::cout << c << " is not alphanumeric." << std::endl;
}
return 0;
}c 为 'A'。isalnum(c) 将检查 c 是否是字母或数字。由于 'A' 是一个字母,所以输出显示 'A' 是字母数字字符。c 设置为 '5'。isalnum(c) 将再次检查 c 是否是字母或数字。因为 '5' 是一个数字,所以输出显示 '5' 是字母数字字符。c 设置为 '@'。isalnum(c) 将检查 c 是否是字母或数字。由于 '@' 不是字母或数字,所以输出显示 '@' 不是字母数字字符。isalnum 函数返回非零值表示字符是字母或数字,返回0表示字符不是字母或数字。c 可以是字符的 ASCII 值,也可以是字符字面量。2.isalpha(int c)isalpha(int c) 函数用于判断字符 c 是否是一个字母(包括小写字母和大写字母)。
#include <cctype>
int isalpha(int c);c:要检查的字符,以 int 类型表示。通常传入字符的 ASCII 值或字符字面量。c 是一个字母(无论是小写字母还是大写字母),函数返回一个非零值(通常是1)。c 不是字母(即不是小写字母也不是大写字母),则返回0。#include <iostream>
#include <cctype>
int main() {
char c = 'A';
if (isalpha(c)) {
std::cout << c << " is an alphabetic character." << std::endl;
} else {
std::cout << c << " is not an alphabetic character." << std::endl;
}
c = '5';
if (isalpha(c)) {
std::cout << c << " is an alphabetic character." << std::endl;
} else {
std::cout << c << " is not an alphabetic character." << std::endl;
}
c = '@';
if (isalpha(c)) {
std::cout << c << " is an alphabetic character." << std::endl;
} else {
std::cout << c << " is not an alphabetic character." << std::endl;
}
return 0;
}c 为 'A'。isalpha(c) 将检查 c 是否是字母。因为 'A' 是一个字母,所以输出显示 'A' 是一个字母。c 设置为 '5'。isalpha(c) 将再次检查 c 是否是字母。因为 '5' 不是字母,所以输出显示 '5' 不是一个字母。c 设置为 '@'。isalpha(c) 将检查 c 是否是字母。因为 '@' 不是字母,所以输出显示 '@' 不是一个字母。isalpha 函数返回非零值表示字符是一个字母,返回0表示字符不是一个字母。c 可以是字符的 ASCII 值,也可以是字符字面量。isalpha和isalnum不要搞混了,一个有数字一个不带数字

3.isdigit(int c)isdigit(int c) 函数用于判断字符 c 是否是一个数字字符。
#include <cctype>
int isdigit(int c);c:要检查的字符,以 int 类型表示。通常传入字符的 ASCII 值或字符字面量。c 是一个数字字符(即 '0' 到 '9'),函数返回一个非零值(通常是1)。c 不是数字字符,则返回0。#include <iostream>
#include <cctype>
int main() {
char c = '5';
if (isdigit(c)) {
std::cout << c << " is a digit." << std::endl;
} else {
std::cout << c << " is not a digit." << std::endl;
}
c = 'A';
if (isdigit(c)) {
std::cout << c << " is a digit." << std::endl;
} else {
std::cout << c << " is not a digit." << std::endl;
}
c = '@';
if (isdigit(c)) {
std::cout << c << " is a digit." << std::endl;
} else {
std::cout << c << " is not a digit." << std::endl;
}
return 0;
}c 为 '5'。isdigit(c) 将检查 c 是否是数字字符。因为 '5' 是一个数字字符,所以输出显示 '5' 是一个数字字符。c 设置为 'A'。isdigit(c) 将再次检查 c 是否是数字字符。因为 'A' 不是数字字符,所以输出显示 'A' 不是一个数字字符。c 设置为 '@'。isdigit(c) 将检查 c 是否是数字字符。因为 '@' 不是数字字符,所以输出显示 '@' 不是一个数字字符。isdigit 函数返回非零值表示字符是一个数字字符,返回0表示字符不是一个数字字符。c 可以是字符的 ASCII 值,也可以是字符字面量。4.islower(int c)islower(int c) 函数用于判断字符 c 是否为小写字母。
#include <cctype>
int islower(int c);c:要检查的字符,以 int 类型表示。通常传入字符的 ASCII 值或字符字面量。c 是一个小写字母(即 'a' 到 'z'),函数返回一个非零值(通常是1)。c 不是小写字母,则返回0。#include <iostream>
#include <cctype>
int main() {
char c = 'a';
if (islower(c)) {
std::cout << c << " is a lowercase letter." << std::endl;
} else {
std::cout << c << " is not a lowercase letter." << std::endl;
}
c = 'A';
if (islower(c)) {
std::cout << c << " is a lowercase letter." << std::endl;
} else {
std::cout << c << " is not a lowercase letter." << std::endl;
}
c = '5';
if (islower(c)) {
std::cout << c << " is a lowercase letter." << std::endl;
} else {
std::cout << c << " is not a lowercase letter." << std::endl;
}
return 0;
}条件判断:
c 为 'a'。islower(c) 将检查 c 是否是小写字母。因为 'a' 是一个小写字母,所以输出显示 'a' 是一个小写字母。c 设置为 'A'。islower(c) 将再次检查 c 是否是小写字母。因为 'A' 不是小写字母,所以输出显示 'A' 不是一个小写字母。c 设置为 '5'。islower(c) 将检查 c 是否是小写字母。因为 '5' 不是小写字母,所以输出显示 '5' 不是一个小写字母。islower 函数返回非零值表示字符是一个小写字母,返回0表示字符不是一个小写字母。c 可以是字符的 ASCII 值,也可以是字符字面量。5.isupper(int c)isupper(int c) 函数用于判断字符 c 是否为大写字母。
#include <cctype>
int isupper(int c);c:要检查的字符,以 int 类型表示。通常传入字符的 ASCII 值或字符字面量。c 是一个大写字母(即 'A' 到 'Z'),函数返回一个非零值(通常是1)。c 不是大写字母,则返回0。#include <iostream>
#include <cctype>
int main() {
char c = 'A';
if (isupper(c)) {
std::cout << c << " is an uppercase letter." << std::endl;
} else {
std::cout << c << " is not an uppercase letter." << std::endl;
}
c = 'a';
if (isupper(c)) {
std::cout << c << " is an uppercase letter." << std::endl;
} else {
std::cout << c << " is not an uppercase letter." << std::endl;
}
c = '5';
if (isupper(c)) {
std::cout << c << " is an uppercase letter." << std::endl;
} else {
std::cout << c << " is not an uppercase letter." << std::endl;
}
return 0;
}c 为 'A'。isupper(c) 将检查 c 是否是大写字母。因为 'A' 是一个大写字母,所以输出显示 'A' 是一个大写字母。c 设置为 'a'。isupper(c) 将再次检查 c 是否是大写字母。因为 'a' 不是大写字母,所以输出显示 'a' 不是一个大写字母。c 设置为 '5'。isupper(c) 将检查 c 是否是大写字母。因为 '5' 不是大写字母,所以输出显示 '5' 不是一个大写字母。isupper 函数返回非零值表示字符是一个大写字母,返回0表示字符不是一个大写字母。c 可以是字符的 ASCII 值,也可以是字符字面量。6.isspace(int c)isspace(int c) 函数用于判断字符 c 是否为空白字符。
#include <cctype>
int isspace(int c);c:要检查的字符,以 int 类型表示。通常传入字符的 ASCII 值或字符字面量。c 是一个空白字符,函数返回一个非零值(通常是1)。c 不是空白字符,则返回0。空白字符包括:
' ' (ASCII值为 32)'\n' (ASCII值为 10)'\r' (ASCII值为 13)'\t' (ASCII值为 9)'\v' (ASCII值为 11)'\f' (ASCII值为 12)这些字符通常用于格式化文本或者在输入处理中进行空白字符的分隔和识别。
#include <iostream>
#include <cctype>
int main() {
char c = ' ';
if (isspace(c)) {
std::cout << "Character '" << c << "' is a whitespace character." << std::endl;
} else {
std::cout << "Character '" << c << "' is not a whitespace character." << std::endl;
}
c = '\t';
if (isspace(c)) {
std::cout << "Character '" << c << "' is a whitespace character." << std::endl;
} else {
std::cout << "Character '" << c << "' is not a whitespace character." << std::endl;
}
c = 'A';
if (isspace(c)) {
std::cout << "Character '" << c << "' is a whitespace character." << std::endl;
} else {
std::cout << "Character '" << c << "' is not a whitespace character." << std::endl;
}
return 0;
}c 为 ' '。isspace(c) 将检查 c 是否是空白字符。因为 ' ' 是一个空格字符,所以输出显示 ' ' 是一个空白字符。c 设置为 '\t'(水平制表符)。isspace(c) 将再次检查 c 是否是空白字符。因为 '\t' 是一个水平制表符,所以输出显示 '\t' 是一个空白字符。c 设置为 'A'。isspace(c) 将检查 c 是否是空白字符。因为 'A' 不是空白字符,所以输出显示 'A' 不是一个空白字符。isspace 函数返回非零值表示字符是一个空白字符,返回0表示字符不是一个空白字符。c 可以是字符的 ASCII 值,也可以是字符字面量。7.iscntrl(int c)iscntrl(int c) 函数用于判断字符 c 是否是控制字符。
#include <cctype>
int iscntrl(int c);c:要检查的字符,以 int 类型表示。通常传入字符的 ASCII 值或字符字面量。c 是一个控制字符,函数返回一个非零值(通常是1)。c 不是控制字符,则返回0。控制字符是 ASCII 字符集中的一部分,它们通常不打印并且用于控制显示设备。它们的 ASCII 值范围是 0 到 31,以及 127 (DEL)。常见的控制字符包括:
'\n' (10)、回车符 '\r' (13)、水平制表符 '\t' (9) 等。这些字符通常不可见,并且用于在文本处理和通信中实现格式化和控制。
#include <iostream>
#include <cctype>
int main() {
char c = '\n'; // 换行符
if (iscntrl(c)) {
std::cout << "Character with ASCII value " << static_cast<int>(c) << " is a control character." << std::endl;
} else {
std::cout << "Character with ASCII value " << static_cast<int>(c) << " is not a control character." << std::endl;
}
c = 'A'; // 普通可打印字符
if (iscntrl(c)) {
std::cout << "Character with ASCII value " << static_cast<int>(c) << " is a control character." << std::endl;
} else {
std::cout << "Character with ASCII value " << static_cast<int>(c) << " is not a control character." << std::endl;
}
c = '\t'; // 水平制表符
if (iscntrl(c)) {
std::cout << "Character with ASCII value " << static_cast<int>(c) << " is a control character." << std::endl;
} else {
std::cout << "Character with ASCII value " << static_cast<int>(c) << " is not a control character." << std::endl;
}
return 0;
}c 为 '\n'(换行符)。iscntrl(c) 将检查 c 是否是控制字符。因为 '\n' 是一个控制字符,所以输出显示换行符是一个控制字符。c 设置为 'A'。iscntrl(c) 将再次检查 c 是否是控制字符。因为 'A' 不是控制字符,所以输出显示 'A' 不是一个控制字符。c 设置为 '\t'(水平制表符)。iscntrl(c) 将检查 c 是否是控制字符。因为 '\t' 不是控制字符,所以输出显示水平制表符不是一个控制字符。iscntrl 函数返回非零值表示字符是一个控制字符,返回0表示字符不是一个控制字符。c 可以是字符的 ASCII 值,也可以是字符字面量。8.ispunct(int c)ispunct(int c) 函数用于判断字符 c 是否是标点符号。
#include <cctype>
int ispunct(int c);c:要检查的字符,以 int 类型表示。通常传入字符的 ASCII 值或字符字面量。c 是一个标点符号,函数返回一个非零值(通常是1)。c 不是标点符号,则返回0。标点符号是指在文本中用于标点和分隔的字符,通常不包括字母、数字或空格。这些字符在不同语言和文本处理系统中可能有所不同,但通常包括以下类型的字符:
.,;:!?" 和 '( ) [ ] { }-/#include <iostream>
#include <cctype>
int main() {
char c = '.'; // 句点
if (ispunct(c)) {
std::cout << "Character " << c << " is a punctuation mark." << std::endl;
} else {
std::cout << "Character " << c << " is not a punctuation mark." << std::endl;
}
c = 'A'; // 字母
if (ispunct(c)) {
std::cout << "Character " << c << " is a punctuation mark." << std::endl;
} else {
std::cout << "Character " << c << " is not a punctuation mark." << std::endl;
}
c = '*'; // 星号
if (ispunct(c)) {
std::cout << "Character " << c << " is a punctuation mark." << std::endl;
} else {
std::cout << "Character " << c << " is not a punctuation mark." << std::endl;
}
return 0;
}c 为 '.'(句点)。ispunct(c) 将检查 c 是否是标点符号。因为 '.' 是一个标点符号,所以输出显示句点是一个标点符号。c 设置为 'A'。ispunct(c) 将再次检查 c 是否是标点符号。因为 'A' 不是标点符号,所以输出显示 'A' 不是一个标点符号。c 设置为 '*'(星号)。ispunct(c) 将检查 c 是否是标点符号。因为 '*' 不是标点符号,所以输出显示星号不是一个标点符号。ispunct 函数返回非零值表示字符是一个标点符号,返回0表示字符不是一个标点符号。c 可以是字符的 ASCII 值,也可以是字符字面量。9.isxdigit(int c)isxdigit(int c) 函数用于判断字符 c 是否是十六进制数字字符。
#include <cctype>
int isxdigit(int c);c:要检查的字符,以 int 类型表示。通常传入字符的 ASCII 值或字符字面量。c 是一个十六进制数字字符 (0-9, a-f, A-F),函数返回一个非零值(通常是1)。c 不是十六进制数字字符,则返回0。十六进制数字字符是指以下字符:
0 到 9(数字 0 到 9)a 到 f(小写字母 a 到 f)A 到 F(大写字母 A 到 F)这些字符用来表示十六进制数字系统中的数值。
#include <iostream>
#include <cctype>
int main() {
char c = '7'; // 十六进制数字字符
if (isxdigit(c)) {
std::cout << "Character " << c << " is a hexadecimal digit." << std::endl;
} else {
std::cout << "Character " << c << " is not a hexadecimal digit." << std::endl;
}
c = 'g'; // 字母
if (isxdigit(c)) {
std::cout << "Character " << c << " is a hexadecimal digit." << std::endl;
} else {
std::cout << "Character " << c << " is not a hexadecimal digit." << std::endl;
}
c = 'B'; // 十六进制数字字符
if (isxdigit(c)) {
std::cout << "Character " << c << " is a hexadecimal digit." << std::endl;
} else {
std::cout << "Character " << c << " is not a hexadecimal digit." << std::endl;
}
return 0;
}条件判断:
c 为 '7'。isxdigit(c) 将检查 c 是否是十六进制数字字符。因为 '7' 是一个十六进制数字字符,所以输出显示 '7' 是一个十六进制数字字符。c 设置为 'g'。isxdigit(c) 将再次检查 c 是否是十六进制数字字符。因为 'g' 不是十六进制数字字符,所以输出显示 'g' 不是一个十六进制数字字符。c 设置为 'B'。isxdigit(c) 将检查 c 是否是十六进制数字字符。因为 'B' 是一个十六进制数字字符,所以输出显示 'B' 是一个十六进制数字字符。isxdigit 函数返回非零值表示字符是一个十六进制数字字符,返回0表示字符不是一个十六进制数字字符。c 可以是字符的 ASCII 值,也可以是字符字面量。0-9,小写字母 a-f 和大写字母 A-F。