std :: stoi - 非数字字符的字符串被解析为整数而不抛出异常(c ++)

时间:2018-04-03 17:08:02

标签: c++ parsing integer std

当使用std :: stoi并传递一个以数字开头并后跟非数字字符的字符串时,该字符串将成功解析为整数,而不会抛出异常。 E.g" 0abcf"被解析为0。 我想要一个字符串只有在它包含数字字符时才被解析为整数(即​​" 123"但不是" 12a"),是否存在执行此操作的现有函数?

1 个答案:

答案 0 :(得分:1)

引用documentation

  

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

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