C++ 标准库 - <cstdlib>

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 总览或标准库概览。