📜  stoi cpp - C++ (1)

📅  最后修改于: 2023-12-03 15:35:09.657000             🧑  作者: Mango

stoi cpp - C++

stoi 是 C++ 的一个标准库函数,用来将字符串转换为整数(string to integer)。这个函数可以将字符串中的数字转化为整数,并且还可以处理一些特殊情况,例如字符串不是数字时会引发异常。

函数原型

函数的原型如下:

int stoi(const std::string &str, size_t *idx = 0, int base = 10);

参数 str 是需要转换的输入字符串;idx 是可选的参数,用于返回不能被解析的第一个字符的位置;base 表示转换的进制。当 base 被设置为 0 时,函数会试图自动检测字符串的进制。

使用方法

使用 stoi 非常简单。以下是一个例子:

#include <iostream>
#include <string>

using namespace std;

int main () {
  string str_dec = "2001, A Space Odyssey";
  string str_hex = "40c3";
  string str_bin = "-10010110001";
  string str_auto = "0x7f"; // hex

  int n_dec = stoi(str_dec);
  int n_hex = stoi(str_hex, nullptr, 16);
  int n_bin = stoi(str_bin, nullptr, 2);
  int n_auto = stoi(str_auto, nullptr, 0);

  cout << "str_dec = " << str_dec << ",\t n_dec = " << n_dec << endl;
  cout << "str_hex = " << str_hex << ",\t n_hex = " << n_hex << endl;
  cout << "str_bin = " << str_bin << ",\t n_bin = " << n_bin << endl;
  cout << "str_auto = " << str_auto << ",\t n_auto = " << n_auto << endl;

  return 0;
}

这个程序的输出如下:

str_dec = 2001, A Space Odyssey,   n_dec = 2001
str_hex = 40c3,    n_hex = 16579
str_bin = -10010110001,  n_bin = -1185
str_auto = 0x7f,    n_auto = 127
异常处理

函数 stoi 还可以通过引发异常来处理错误情况。下面是一个示例:

#include <iostream>
#include <string>
#include <stdexcept>

int main () {
  std::string str_bad = "bad input";

  try {
    int n_bad = std::stoi (str_bad);
  }
  catch (std::invalid_argument& e) {
    std::cout << "stoi(" << str_bad << ") failed: " << e.what() << std::endl;
  }
  catch (std::out_of_range& e) {
    std::cout << "stoi(" << str_bad << ") failed: " << e.what() << std::endl;
  }

  return 0;
}

这个程序的输出如下:

stoi(bad input) failed: invalid stoi argument
总结

stoi 函数是 C++ 中一个非常有用的工具,用于将字符串转换为整数。使用这个函数可以简化许多常见的字符串处理任务,并且可以通过异常来处理错误情况。请注意,在使用 stoi 函数时对于错误情况一定要进行处理,否则可能会导致代码崩溃。