📜  C ++中的std :: stol()和std :: stoll()函数(1)

📅  最后修改于: 2023-12-03 14:39:39.116000             🧑  作者: Mango

C++中的std::stol()和std::stoll()函数

简介

在C++中,要将字符串类型的数字转换为整型(int、long、long long等),可以使用标准库中的std::stoi()std::stol()std::stoll()函数。其中,std::stol()std::stoll()函数可以将字符串类型的数字转换为长整型(long和long long),并返回其对应的整型值。

函数声明和用法
#include <string>
long stol (const string& str, size_t* idx = 0, int base = 10);
long long stoll (const string& str, size_t* idx = 0, int base = 10);

std::stol()std::stoll()函数的参数相同,包括输入字符串str、parse过程的开始位置idx和进制数base。其中,str是待转换的字符串,idx是可选参数,用于指示parse过程开始的位置,base是指定的进制数。如果str中包含非数字字符,或者数字超出了所选进制数的范围,会出现异常。

std::stol()函数返回的数据类型是long,而std::stoll()函数返回的数据类型是long long

示例代码:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str1 = "123";
    string str2 = "9223372036854775807"; // long long 类型的最大值

    long num1 = stol(str1);
    long long num2 = stoll(str2);

    cout << "num1 = " << num1 << endl;
    cout << "num2 = " << num2 << endl;

    return 0;
}

输出结果:

num1 = 123
num2 = 9223372036854775807
注意事项
  1. std::stol()std::stoll()函数只能将纯数字的字符串转换为整型,如果有空格、符号等非数字字符,会出现异常;
  2. 如果字符串中的数字超出了指定的进制数范围,也会出现异常;
  3. 如果idx的初始值指向一个非数字字符或负数,std::stol()std::stoll()函数会返回0;
  4. 如果要将字符串类型的数字转换为浮点数,可以使用std::stof()std::stod()函数。
结论

std::stol()std::stoll()函数是C++标准库中用于将字符串类型的数字转换为长整型的函数,能够方便地进行数据类型转换,是C++开发中十分常用的功能函数。在使用过程中需要注意输入参数的格式,以及转换的结果是否超出了指定进制数的范围。