首页 > 解决方案 > 如何检查字符串是否正确以将其转换为 int?

问题描述

现在我只谈论 stl 函数。不是这样的:

for (char c : s) {
  if (c < '0' || c > '9') {
    return false;
  }
}

标签: c++stringint

解决方案


我不相信有一个内置函数可以做到这一点,但你可以使用算法来做到这一点:

bool is_valid_int(const std::string& s)
{
    return std::all_of(std::begin(s), std::end(s), 
                         [](unsigned char c) { 
                           return std::isdigit(c); 
                       });
}

请注意,此解决方案仅检查字符串的所有字符是否都是数字。要检查它是否可转换为 int,您可以执行以下操作:

int n;
try { n = std::stoi(s); }
catch(...) { /* do something */ }

推荐阅读