📅  最后修改于: 2023-12-03 14:39:37.350000             🧑  作者: Mango
strtoul()
函数是C/C++中的标准函数,用于将字符串转换为无符号长整型数。它定义在头文件<cstdlib>
中。
unsigned long int strtoul(const char* str, char** endptr, int base);
str
:需要被转换为无符号长整型数的字符串。endptr
:可以为null
指针,如果不为null
指针,则会在函数调用结束时通过指针返回未被转换的字符串部分的指针。base
:进制数,可以是2、8、10或16,或者使用0
表示自动根据字符串的前缀确定进制数。如果转换成功,则返回无符号长整型数;如果没有可转换的字符,则返回0。
#include <cstdlib>
#include <iostream>
int main() {
const char* str1 = "42";
const char* str2 = "110010";
const char* str3 = "052";
const char* str4 = "0x2a";
char* endptr;
std::cout << "str1 -> " << strtoul(str1, &endptr, 10) << '\n'; // 输出:42
std::cout << "str2 -> " << strtoul(str2, &endptr, 2) << '\n'; // 输出:50
std::cout << "str3 -> " << strtoul(str3, &endptr, 0) << '\n'; // 输出:42
std::cout << "str4 -> " << strtoul(str4, &endptr, 0) << '\n'; // 输出:42
return 0;
}
代码示例中展示了strtoul()
函数的一些常见用法,并且展示了如何通过endptr
参数获取未被转换的字符串部分的指针。
strtoul()
函数在转换时会自动跳过字符串中的前导空格。errno
变量检查是否发生了错误,或者检查endptr
指针是否指向字符串的结尾。strtoul()
函数可以根据字符串前缀自动确定进制数,因此如果需要自行指定进制数,则需要仔细考虑字符串是否具有前缀以及使用什么进制数。strtoul()
函数在转换结束时会返回一个无符号长整型数,因此调用该函数时需要考虑变量的类型。如果使用int
类型的变量存储结果,则需要进行类型转换。