我正在尝试对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;
}
答案 0 :(得分:1)
根据标准,在第一次迭代中访问num[i]
可能是未定义行为,否则会产生空字符值,从而导致stoi
转换失败。
您可以通过仅访问边界内的元素来解决此问题。
for(int i = static_cast< int >(num.length()) - 1; 0 <= i; --i) {