C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > c++ stoi函数

c++中stoi函数的使用小结

作者:crane_in_sky

本文主要介绍了c++中stoi函数的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

std::stoi是C++标准库中的一个函数,用于将字符串转换为整数类型。它的全名是std::string to int,所以stoi就是string to int的缩写。

函数原型如下:

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

参数解释:

函数功能: std::stoi会从字符串的开头开始,依次读取字符,直到遇到非数字字符或字符串结束。它将读取到的数字字符解析为整数,并返回转换后的整数值。

如果字符串中的第一个字符是非数字字符,或者字符串为空,或者不包含任何数字字符,std::stoi会抛出一个std::invalid_argument异常。如果转换后的整数值超出了所表示的整数类型的范围,std::stoi会抛出一个std::out_of_range异常。

示例用法:

#include <iostream>
#include <string>

int main() {
    std::string str = "12345";
    int num = std::stoi(str);
    std::cout << num << std::endl;  // 输出:12345
    return 0;
}

上述代码将字符串"12345"转换为整数12345,并输出结果。

示例2:使用 idx 参数

#include &lt;iostream&gt;
#include &lt;string&gt;

int main() {
    std::string str = "123abc";
    std::size_t idx;
    try {
        int num = std::stoi(str, &amp;idx);
        std::cout &lt;&lt; "转换结果: " &lt;&lt; num &lt;&lt; std::endl;
        std::cout &lt;&lt; "转换停止位置: " &lt;&lt; idx &lt;&lt; std::endl;
    } catch (const std::invalid_argument&amp; e) {
        std::cout &lt;&lt; "无效的输入: " &lt;&lt; e.what() &lt;&lt; std::endl;
    } catch (const std::out_of_range&amp; e) {
        std::cout &lt;&lt; "数值超出范围: " &lt;&lt; e.what() &lt;&lt; std::endl;
    }
    return 0;
}

在这个示例中,我们使用了 std::stoi 的第二个参数 idx,它存储了转换停止的位置,即字符串中 “123” 之后的字符 ‘a’ 的索引。

示例3:使用 base 参数

#include &lt;iostream&gt;
#include &lt;string&gt;

int main() {
    std::string str = "1a2";
    try {
        int num = std::stoi(str, nullptr, 16); // 将字符串视为十六进制数
        std::cout &lt;&lt; "十六进制转换结果: " &lt;&lt; num &lt;&lt; std::endl;
    } catch (const std::invalid_argument&amp; e) {
        std::cout &lt;&lt; "无效的输入: " &lt;&lt; e.what() &lt;&lt; std::endl;
    } catch (const std::out_of_range&amp; e) {
        std::cout &lt;&lt; "数值超出范围: " &lt;&lt; e.what() &lt;&lt; std::endl;
    }
    return 0;
}

在这个示例中,我们使用了 std::stoi 的第三个参数 base,将字符串 “1a2” 视为十六进制数进行转换。

异常

如果转换失败(例如,字符串不包含有效的整数),stoi() 会抛出一个 std::invalid_argument 异常。如果转换后的数字超出了 int 类型的范围,会抛出 std::out_of_range 异常。

注意事项

到此这篇关于c++中stoi函数的使用小结的文章就介绍到这了,更多相关c++ stoi函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文