std::stoi - 具有非数字字符的字符串被解析为整数而不引发异常 (c++)

D.F*_*kaz 2 c++ parsing integer std

当使用 std::stoi 并传递以数字开头且后跟非数字字符的字符串时,该字符串将成功解析为整数,而不会引发异常。例如,“0abcf”被解析为 0。我希望只有当字符串仅包含数字字符(即“123”但不包含“12a”)时才将其解析为整数,是否有现有函数可以执行此操作?

Max*_*hof 5

引用文档

int stoi( const std::string& str, std::size_t* pos = 0, int base = 10 );
...
[第一个未转换的]字符的索引将被计算并存储在 中*pos,给出转换处理的字符数。

因此,为了检查所有字符是否有效/已解析,您需要做的就是传递第二个参数,然后检查该值(转换后的字符数)是否等于字符串中的字符数。

  • @D.Fonkaz——您拥有编写所需解析函数所需的所有信息。 (3认同)