在 C++ 中,如果你使用
std::stoi()
函数将一个字符串转换为整数时,可能会发生异常。这种异常通常是由于输入字符串不是有效的数字而引起的。为了避免应用程序崩溃,我们需要使用异常处理机制来捕获这种异常。
在 C++ 中,我们可以使用
try...catch
块来捕获异常。在
try
块中,我们将调用
std::stoi()
函数来尝试将一个字符串转换为整数。如果
std::stoi()
函数抛出了异常,程序将跳转到
catch
块中,我们可以在
catch
块中处理异常并采取相应的措施。以下是一个例子:
#include <iostream>
#include <string>
int main() {
std::string str = "not a number";
try {
int num = std::stoi(str);
std::cout << "The number is: " << num << std::endl;
catch (const std::invalid_argument& ia) {
std::cerr << "Invalid argument: " << ia.what() << std::endl;
return 0;
在上面的例子中,我们将一个无效的字符串 "not a number" 传递给 std::stoi()
函数,这将引发 std::invalid_argument
异常。在 catch
块中,我们打印出错误消息以指示出现了无效的参数。
注意,在 catch
块中,我们使用了 const std::invalid_argument&
作为参数,这是因为 std::invalid_argument
异常是通过引用传递的,而且使用常量引用可以提高效率。在 catch
块中,我们还使用了 std::cerr
对象,这是一个标准错误输出流,用于将错误消息打印到标准错误设备(通常是控制台)。