terminate called after throwing an instance of 'std::invalid_argument' what(): stoi Aborted (core dumped)
时间: 2023-09-24 11:11:44 浏览: 199
C程序设计教学课件:CHAPTER13EXCEPTIONHANDLING.pptx
这个错误通常是由于使用`stoi`函数将字符串转换成整数时,字符串的格式不正确,比如字符串中包含了非数字字符或者字符串为空。
解决这个问题的方法是,首先检查一下你传递给`stoi`函数的字符串是否符合要求,确保它只包含数字字符。如果字符串可能为空或者包含非数字字符,你可以使用`try-catch`语句来捕获异常,避免程序崩溃。例如:
```
try {
int num = std::stoi(str);
// do something with num
} catch (std::exception const & e) {
// handle exception
std::cerr << "Error: " << e.what() << std::endl;
}
```
这里我们使用`try-catch`语句来捕获`std::invalid_argument`异常,如果发生了异常,我们将异常信息输出到标准错误流中。这样即使出现了非法的字符串,程序也不会崩溃,而是会输出错误信息并继续执行。
阅读全文