使用 stoi 时出现问题

Problems using stoi

本文关键字:问题 stoi 使用      更新时间:2023-10-16

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

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
}

错误消息告诉您您需要知道的所有信息:stoi抛出std::invalid_argument异常,并显示消息"无转换",并且未捕获该异常,因此程序终止。

如果传递的内容无法转换为整数,std::stoi可能会抛出std::invalid_argument。添加try-catch以捕获std::exception以避免崩溃。将item输出到cout以检查您尝试转换为整数的值。

您还可以使用调试器逐步执行程序,并在每个步骤后检查不同的变量。仅仅通过查看代码来理解问题所在对你的大脑很有用,但不幸的是,效果不是很好。