函数stoi引发SIGBART错误

时间:2018-08-26 19:33:50

标签: c++ string

我正在尝试对leetcode here进行此问题。虽然,此函数std :: stoi()对我不起作用,我真的不明白为什么。这是我在Xcode上遇到的错误:

libc++abi.dylib: terminating with uncaught exception of type std::invalid_argument: stoi: no conversion
(lldb) 

这是我的代码:

#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
#include <sstream>
#include <iterator>

int main(int argc, const char * argv[]) {
    int x = 100;
    std::string num = std::to_string(x);
    std::vector<std::string> result((int)num.length());

    int index = 0;
    for(int i = (int)num.length(); i >= 0; i--) {
        result[index].push_back(num[i]);
    }


    int temp = std::stoi(result[0]);
    std::cout << temp << std::endl;




}

1 个答案:

答案 0 :(得分:1)

根据标准,在第一次迭代中访问num[i]可能是未定义行为,否则会产生空字符值,从而导致stoi转换失败。

您可以通过仅访问边界内的元素来解决此问题。

for(int i = static_cast< int >(num.length()) - 1; 0 <= i; --i) {