给定的字符串是否可转换为整数

时间:2014-04-23 07:39:53

标签: c string integer

在C中是否有一种有效的方法来检查给定的字符串是否可以转换为整数? 输出错误应指示字符串是否可转换 例如,“aa”不可转换,“123”可转换。

4 个答案:

答案 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::stoistd::stolstd::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;
  }
}