C stoi函数,字符串转整数

D
dashen8 2025-02-07T13:02:13+08:00
0 0 252

简介

在C++中,我们经常需要将字符串转换为整数,而C++的标准库中提供了一个非常方便的函数stoi,用于将字符串转换为整数。在本文中,我们将详细介绍stoi函数的用法和注意事项。

stoi函数的用法

stoi函数的定义如下:

int stoi( const std::string& str, std::size_t* pos = 0, int base = 10 );
  • str:需要转换为整数的字符串。
  • pos(可选):用于存储第一个不能转换为整数的字符的索引位置。
  • base(可选):进制数,默认为十进制。

以下是stoi函数的使用示例:

#include <iostream>
#include <string>

int main() {
    std::string str = "12345";
    int num = std::stoi(str);
    std::cout << num << std::endl;

    return 0;
}

输出结果为:

12345

注意事项

在使用stoi函数时,需要注意以下几点:

  1. 字符串必须是有效的整数表示,包括可选的符号和数字字符。
  2. 如果字符串的第一个字符不是有效的数字字符或正负号,则会抛出std::invalid_argument异常。
  3. 如果字符串的转换超出了整数类型的表示范围,则会抛出std::out_of_range异常。
  4. 可以使用pos参数获取第一个不能转换为整数的字符的索引位置。如果不提供pos参数,则会忽略剩余的字符串。
  5. 可以使用base参数指定进制数,如10表示十进制,16表示十六进制。默认为十进制。

以下是一些stoi函数使用时的示例和异常处理:

#include <iostream>
#include <string>

int main() {
    std::string str1 = "12345";
    int num1 = std::stoi(str1);
    std::cout << num1 << std::endl;

    std::string str2 = "12345abc";
    try {
        int num2 = std::stoi(str2);
        std::cout << num2 << std::endl;
    } catch (const std::invalid_argument& e) {
        std::cout << "Invalid argument: " << e.what() << std::endl;
    }

    std::string str3 = "99999999999999999999";
    try {
        int num3 = std::stoi(str3);
        std::cout << num3 << std::endl;
    } catch (const std::out_of_range& e) {
        std::cout << "Out of range: " << e.what() << std::endl;
    }

    std::string str4 = "12345abc";
    std::size_t pos;
    int num4 = std::stoi(str4, &pos);
    std::cout << "Partially converted number: " << num4 << std::endl;
    std::cout << "First non-converted character index: " << pos << std::endl;

    std::string str5 = "FF";
    int num5 = std::stoi(str5, nullptr, 16);
    std::cout << num5 << std::endl;

    return 0;
}

输出结果为:

12345
Invalid argument: stoi
Out of range: stoi
Partially converted number: 12345
First non-converted character index: 5
255

总结

stoi函数是C++标准库中用于字符串转整数的函数,非常方便和实用。通过本文的介绍,我们学习了stoi函数的用法和注意事项,希望对你在使用C++进行字符串转整数操作时有所帮助。

相似文章

    评论 (0)