catch stoi exception c++

在 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 对象,这是一个标准错误输出流,用于将错误消息打印到标准错误设备(通常是控制台)。

  •