在C中是否有一种有效的方法来检查给定的字符串是否可以转换为整数? 输出错误应指示字符串是否可转换 例如,“aa”不可转换,“123”可转换。
答案 0 :(得分:3)
使用C,使用带有结束指针的strtol(3)函数:
char* end=NULL;
long l = strtol(cstr, &end, 0);
if (end >= cstr && *end)
badnumber = true;
else
badnumber = false;
使用C ++ 11,使用std::strtol函数(它在失败时引发异常)。
答案 1 :(得分:3)
C ++ 11包含std::stoi
,std::stol
和std::stoll
functions,如果无法转换字符串,则会抛出异常。
答案 2 :(得分:1)
您还可以将字符串和appply isdigit
函数循环到每个字符
答案 3 :(得分:1)
bool is_convertible_to_int(const std::string &s) {
try {
int t = std::stoi(s);
return std::to_string(t).length() == s.length();
}
catch (std::invalid_argument) {
return false;
}
}