📅  最后修改于: 2023-12-03 15:35:09.657000             🧑  作者: Mango
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
函数时对于错误情况一定要进行处理,否则可能会导致代码崩溃。