使用stoi的问题

时间:2017-01-14 20:51:27

标签: c++

我正在尝试将包含数字子序列的字符串转换为整数,以便我可以对其进行数学运算。但是,我一直在:

libc++abi.dylib: terminating with uncaught exception of type std::invalid_argument: stoi: no conversion Abort trap: 6

我在调用stoi之前使用cout来查看项目中的内容,我会输出一个数字。 例如, 如果sequence为10,n = 2,则cout << item;将输出:

0
1
10

一旦我尝试使用stoi,我就会遇到程序崩溃。

以下是代码:

for (int i = 0; i < (1 << n); ++i)
{
    string item;

    //Determining subsequence
    for (int j = 0; j < n; ++j)
    {
          if ( i & (1 << j))
          {
             item.push_back(sequence.at(j));
          }
     }

cout << stoi(item) << endl; //error occurs here
}

1 个答案:

答案 0 :(得分:1)

错误消息告诉您需要知道的所有事项:stoi抛出std::invalid_argument例外消息&#34;无转换&#34;并且没有捕获该异常,因此程序终止。

如果您传递的内容无法转换为整数,则

std::stoi可以抛出std::invalid_argument。添加try-catch以捕获std::exception以避免崩溃。将item输出到cout以检查您尝试转换为整数的值。

您还可以使用调试器逐步执行程序,并在每个步骤后检查不同的变量。不幸的是,试着通过查看代码来了解什么是错误对你的大脑有用但不是很有效。