📅  最后修改于: 2023-12-03 15:35:09.667000             🧑  作者: Mango
在C++11标准中,stoi()函数是将字符串转换为整数的一种常用方式。这个函数可以处理一些常见的错误,例如字符串不是数字,或者数字超过了可表示范围。
stoi()函数的语法如下:
int stoi (const string& str, size_t* idx = 0, int base = 10);
【提示】默认基数(base)为10,即十进制整数。
| 参数 | 描述 | | ---------- | ------------------------------------------ | | str | 要转换的字符串 | | idx | 指向存储第一个没有被成功转换的字符索引位置 | | base | 要转换的数字所用的进制(默认为10) |
该函数将给定字符串转换为整数并返回。如果无法转换,则会引发 std::invalid_argument
或 std::out_of_range
异常。
以下是一个使用stoi()函数的简单示例,展示其如何将字符串转换为整数:
#include <iostream>
#include <string>
int main() {
std::string str_num = "123";
int num = std::stoi(str_num);
std::cout << num << "\n";
return 0;
}
如果要转换的字符串不是一个数字,则会引发 std::invalid_argument
异常,例如:
std::string str_num = "abc";
int num = std::stoi(str_num); // 抛出 std::invalid_argument
如果要转换的数字超过了 int
类型的范围,则会引发 std::out_of_range
异常,例如:
std::string str_num = "2147483648"; // 超出表示范围的最大值
int num = std::stoi(str_num); // 抛出 std::out_of_range
为了处理这些异常,可以使用try-catch语句如下:
#include <iostream>
#include <string>
int main() {
std::string str_num = "abc";
try {
int num = std::stoi(str_num);
std::cout << num << "\n";
} catch (const std::invalid_argument& e) {
std::cerr << "Error: " << e.what() << "\n";
} catch (const std::out_of_range& e) {
std::cerr << "Error: " << e.what() << "\n";
}
return 0;
}
概括地说,stoi()
函数是一个方便的字符串转换函数。该函数可以快速将字符串转换为整数,并且可以处理一些常见的难点,例如错误的字符串格式或数字超出整数的范围。当然,根据具体的应用场景,我们也可以选择其他的字符串转换函数,例如 strtol()
或 atoi()
。