C++ std::strtol 比 atoi 可控:第二个参数可得到第一个未被转换的字符,第三个参数是进制(0 表示自动识别 0x)。
原型
long strtol(const char* str, char** endptr, int base);参数
str:输入。endptr:若非空,写入停止位置。base:2 到 36,或 0。
返回值
转换得到的 long。
示例
#include <cstdlib>
#include <iostream>
int main() {
char* end = nullptr;
long n = std::strtol("16xyz", &end, 10);
std::cout << n << "\n";
std::cout << end << "\n";
return 0;
}输出:
16
xyz
注意事项
若 end == str 则一个数字都没读到。溢出时返回 LONG_MAX / LONG_MIN 并置 errno。
本头文件到此结束。可返回cstdlib 总览或标准库概览。