`stoi` 函数是 C++ 标准库中的一个函数,用于将字符串转换为整数类型。当使用 `stoi` 函数进行字符串到整数的转换时,如果输入的字符串不符合整数的格式,或者字符串中的数字超出了 `int` 类型的范围,程序会 抛出异常。
`stoi` 函数可能抛出的两种异常类型如下:
invalid_argument 异常:
当输入的字符串不包含任何数字或包含非法字符时,`stoi` 函数会抛出此异常。例如,尝试将一个包含字母的字符串转换为整数就会触发此异常。
out_of_range 异常:
当字符串中的数字超出了 `int` 类型的表示范围时(即大于 `INT_MAX` 或小于 `INT_MIN`),`stoi` 函数会抛出此异常。
为了处理这些异常,可以使用 `try-catch` 语句来捕获并处理这些异常。例如:
```cpp
include include include int main() { std::string str = "12345"; int num; try { num = std::stoi(str); std::cout << "转换成功,数字是: " << num << std::endl; } catch (const std::invalid_argument& e) { std::cerr << "无效的参数: " << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << "超出范围: " << e.what() << std::endl; } return 0; } ``` 在这个示例中,如果字符串 `str` 无法转换为整数,程序会捕获并输出相应的异常信息。这样可以确保程序在遇到无效输入时不会崩溃,而是能够优雅地处理错误情况。