📅  最后修改于: 2023-12-03 14:39:52.215000             🧑  作者: Mango
在C++ STL中,可以使用strtol()
函数将字符串转换为长整型数(long integer)。本文将介绍strtol()
函数的用法及其示例。
strtol()
的语法如下:
long strtol(const char *str, char **endptr, int base);
其中:
str
:要转换的字符串endptr
:指向转换过程中停止的字符的指针(即剩余未被转换的字符串)。base
:表示数字的进制,可以是2到36之间的任何整数值。若省略此参数,则默认以10进制解释数字。strtol()
函数返回结果的长整型数(long integer)。如果发生错误,则返回0。
下面的示例将一个十进制字符串转换为长整型数:
#include <iostream>
#include <cstdlib>
int main() {
char num_str[] = "12345";
char* endptr;
long num = strtol(num_str, &endptr, 10);
std::cout << "转换结果: " << num << std::endl;
if (*endptr != '\0') {
std::cout << "未被转换的字符串: " << endptr << std::endl;
}
return 0;
}
输出结果为:
转换结果: 12345
上述代码中,使用了strtol()
函数将字符串num_str
转换为长整型数num
。转换时指定了进制为10进制(该参数被省略时默认为10进制)。
此外,我们在strtol()
函数的第二个参数中传递了一个指向endptr
指针的指针。这是因为strtol()
函数在转换字符串时,如果遇到了无法转换的字符,会停止转换并将其余的字符串存储在endptr
中。因此,通过查看endptr
中未被转换的字符串,我们可以了解到转换过程中发生了什么。
strtol()
函数只能进行简单的整数字符串转换。如果需要处理浮点数字符串,应该使用strtof()
或者strtod()
函数。strtol()
函数会停止转换并将其余的字符串存储在endptr
中。str
参数为空指针,或只包含空格,strtol()
函数将返回0。LONG_MAX
,否则将出现未定义的行为。strtol()
函数是将字符串转换为长整型数的常用工具之一。了解其用法和注意事项,可以帮助程序员更好地处理字符串数据,并有效地避免错误。