我正在尝试将包含数字子序列的字符串转换为整数,以便我可以对其进行数学运算。但是,我一直在:
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
}
答案 0 :(得分:1)
错误消息告诉您需要知道的所有事项:stoi
抛出std::invalid_argument
例外消息&#34;无转换&#34;并且没有捕获该异常,因此程序终止。
std::stoi
可以抛出std::invalid_argument
。添加try-catch
以捕获std::exception
以避免崩溃。将item
输出到cout
以检查您尝试转换为整数的值。
您还可以使用调试器逐步执行程序,并在每个步骤后检查不同的变量。不幸的是,试着通过查看代码来了解什么是错误对你的大脑有用但不是很有效。