📅  最后修改于: 2023-12-03 15:02:40.924000             🧑  作者: Mango
当您使用 std::stoi()
函数将字符串转换为整数时,如果字符串无法转换为整数,则会抛出 std::invalid_argument
异常,表明转换失败。
但是,如果您没有正确捕获这个异常,程序将会以未捕获异常的形式终止。您可能会看到类似于以下消息的错误:
libc++abi.dylib: terminating with uncaught exception of type std::invalid_argument: stoi: no conversion
这意味着您需要使用 try-catch
块来捕获异常并通过适当的错误处理来处理它。
以下是 try-catch
块的示例代码:
#include <iostream>
#include <string>
int main() {
std::string str = "hello";
try {
int num = std::stoi(str);
std::cout << "The integer value is " << num << std::endl;
}
catch (const std::invalid_argument& e) {
std::cerr << "Invalid argument: " << e.what() << std::endl;
}
return 0;
}
这个代码块中,std::stoi()
函数被用于将一个不可转换为整数的字符串转换为整数。这会导致 std::invalid_argument
异常被抛出。
try
块中的代码试图将字符串转换为一个整数,并将其输出到控制台。
但由于字符串无法转换为整数,异常被抛出并被 catch
块捕获。catch
块中的代码输出异常消息到标准错误流中。
通过以上方式,您可以避免出现异常终止的问题,并通过适当的错误处理来处理异常。