📅  最后修改于: 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);
str
: 带转换的字符串str_end
: 若成功,指向最后一个字符之后的指针将被存储在*str_end
中,否则*str_end
不变(也就是说,不成功时指向str
)。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()
函数处理了不同格式的字符串,并正确解析出了对应的整数。
strtoll()
函数只能处理一个整数,它不能处理带有多个整数的字符串,即使这些整数之间用非数字字符分割。