在 Linux 中判断字符串是否为数字是一个常见任务,例如在数据处理或验证用户输入时。本文将介绍几种 来实现这一目的。
isdigit() 函数
最简单的 是使用 isdigit()
函数,该函数检查字符串中的每个字符是否为数字并返回一个布尔值。以下示例演示了如何使用 isdigit()
函数:
c++
include
bool is_digit(std::string str) {
for (const char& c : str) {
if (!isdigit(c)) {
return false;
}
}
return true;
}
strtol() 函数
strtol()
函数将字符串转换为 long int 类型,并返回转换后的值。如果字符串不是有效的数字,则返回 0。以下示例演示了如何使用 strtol()
函数:
c++
include
bool is_digit(std::string str) {
char* end;
long int val = strtol(str.c_str(), &end, 10);
return (*end == '\0' && val != 0);
}
正则表达式
正则表达式是一种强大的工具,可以用来匹配字符串模式。以下正则表达式可以匹配由一个或多个数字组成的字符串:
^[0-9]+$
可以使用以下代码使用正则表达式来判断字符串是否为数字:
c++
include
bool is_digit(std::string str) {
std::regex re("^[0-9]+$");
return std::regex_match(str, re);
}
atoi() 函数
atoi()
函数将字符串转换为 int 类型。如果字符串不是有效的数字,则返回 0。以下示例演示了如何使用 atoi()
函数:
c++
int is_digit(std::string str) {
return atoi(str.c_str()) != 0;
}
在选择哪种 时,需要考虑字符串的长度和所需性能。对于较短的字符串,isdigit()
函数是最快的选择。对于较长的字符串,正则表达式可能是更好的选择,因为它可以避免不必要的遍历操作。