使用std::all_of结合std::isalpha可判断字符串是否全为字母,需转换为unsigned char避免未定义行为。示例代码展示该方法及手动循环实现,注意空字符串返回false,且std::isalpha对非ASCII字符可能不识别。

在C++中判断一个字符串是否只包含字母,可以通过标准库中的函数来实现。最常用的方法是使用 std::isalpha 配合遍历字符串的每个字符进行检查。
使用 std::all_of 和 std::isalpha
推荐使用 std::all_of 算法结合 std::isalpha 函数来判断字符串中的所有字符是否都是字母。注意:std::isalpha 要求传入的是 unsigned char 类型或非负值,直接传入 char 可能导致未定义行为(特别是处理非ASCII字符时),所以需要做类型转换。
示例代码:
#include
#include
#include
#include
bool isAllAlpha(const std::string& str) {
return !str.empty() && std::all_of(str.begin(), str.end(), [](unsigned char c) {
return std::isalpha(c);
});
}
int main() {
std::string test1 = "Hello";
std::string test2 = "Hello123";
std::string test3 = "abcXYZ";
std::string test4 = "";
std::cout << std::boolalpha;
std::cout << "test1: " << isAllAlpha(test1) << "\\n"; // true
std::cout << "test2: " << isAllAlpha(test2) << "\\n"; // false
std::cout << "test3: " << isAllAlpha(test3) << "\\n"; // true
std::cout << "test4: " << isAllAlpha(test4) << "\\n"; // false (empty)
return 0;
}
手动遍历判断
如果不想使用算法库,也可以用 for 循环逐个判断字符。这种方式逻辑清晰,适合初学者理解。
示例代码:
bool isAllAlpha(const std::string& str) {
if (str.empty()) return false;
for (unsigned char c : str) {
if (!std::isalpha(c)) {
return false;
}
}
return true;
}











