📌  相关文章
📜  stoi() c++ (1)

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

stoi() 函数介绍

简介

在C++11标准中,stoi()函数是将字符串转换为整数的一种常用方式。这个函数可以处理一些常见的错误,例如字符串不是数字,或者数字超过了可表示范围。

函数语法

stoi()函数的语法如下:

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

【提示】默认基数(base)为10,即十进制整数。

参数

| 参数 | 描述 | | ---------- | ------------------------------------------ | | str | 要转换的字符串 | | idx | 指向存储第一个没有被成功转换的字符索引位置 | | base | 要转换的数字所用的进制(默认为10) |

返回值

该函数将给定字符串转换为整数并返回。如果无法转换,则会引发 std::invalid_argumentstd::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()