📜  C++ strtoll()(1)

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

C++函数strtoll()
介绍

strtoll()是一个在C++中使用的函数,可以将string类型或者char*类型的数字字符串转换为long long类型的整数。该函数可以对负整数和16进制、8进制的整数字符串进行有效解析,同时也可以处理溢出问题。

函数原型如下:

long long int strtoll(const char *str, char **str_end, int base);
参数
  1. str: 带转换的字符串
  2. str_end: 若成功,指向最后一个字符之后的指针将被存储在*str_end中,否则*str_end不变(也就是说,不成功时指向str)。
  3. base: 转换的数字进制,可以是0、2、8、10、16,其中0表示自动判断。如果base是0,则会从字符串的前缀中自动推断基数(例如,0x表示16进制,0表示8进制,否则是10进制)。如果base不是0,它必须在2和36之间(包括2和36)。
返回值

若成功,将返回对应的long long整数,否则返回0

代码演示

下面是strtoll()函数的一个代码示例:

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    char str1[] = "12345";
    char str2[] = "-2147483648";
    char str3[] = "0x1a";
    char str4[] = "0765";

    long long int num1 = strtoll(str1, NULL, 10);
    long long int num2 = strtoll(str2, NULL, 10);
    long long int num3 = strtoll(str3, NULL, 16);
    long long int num4 = strtoll(str4, NULL, 8);

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

    return 0;
}

以上程序运行结果如下:

num1 = 12345
num2 = -2147483648
num3 = 26
num4 = 501

可以看出,strtoll()函数处理了不同格式的字符串,并正确解析出了对应的整数。

注意事项
  1. 转换的字符串必须是数字字符串,否则该函数的行为是未定义的。
  2. 若所转换的数字字符串中含有不合法字符,或者出现了溢出情况,该函数会自动停止解析,返回目前为止已经解析出来的数值。
  3. strtoll()函数只能处理一个整数,它不能处理带有多个整数的字符串,即使这些整数之间用非数字字符分割。