isalpha是C标准库函数,需包含头文件,参数应为unsigned char转换后的int值,仅识别ASCII字母(A–Z/a–z),使用时须避免负char和EOF导致未定义行为。

isalpha 函数的基本用法和头文件依赖
isalpha 是 C 标准库函数,在 c++ 中仍广泛使用,但必须包含 或更常见的 (C++ 推荐)。它接收一个 int 类型参数(实际常传 unsigned char 转换后的值),返回非零表示是字母,返回 0 表示不是。
常见错误:直接传 char 给 isalpha,在 char 为负值的平台(如某些 linux 环境下 char 默认 signed)会触发未定义行为。
- 务必先将
char转为unsigned char再传入:isalpha(static_cast(c)) - 不要用
std::isalpha(带 locale 版本)替代,除非你明确需要 locale 敏感判断——它默认不识别 ASCII 以外的字母,且开销更大 -
isalpha('A')返回非零(通常是1),isalpha('5')返回0
判断字符串中每个字符是否为字母的典型写法
对 std::String 或 C 风格字符串遍历时,不能直接写 isalpha(s[i]),尤其当 s[i] 可能是负值时。
正确模式:
立即学习“C++免费学习笔记(深入)”;
for (char c : str) { if (isalpha(static_cast(c))) { // 是字母 } }
- 用范围 for 循环时,
c是char类型,必须显式转换 - 若用下标访问
str[i],同样要转:isalpha(static_cast(str[i])) - 注意:空字符串、