📜  C++中的strol()函数(1)

📅  最后修改于: 2023-12-03 14:59:50.980000             🧑  作者: Mango

C++ 中的 strol() 函数介绍

在 C++ 语言中,strol() 函数是将字符串转换为长整型(long int)的一个标准库函数,其定义位于头文件 cstdlib 中。该函数的返回值是一个长整型的值。

函数原型
long int strtol (const char* str, char** endptr, int base);
参数说明
  • str: 需要进行转换的字符串。
  • endptr: 用于指向字符串中第一个不合法字符的指针,如果该值为 NULL,则表示不需要此信息。
  • base: 指定数字的进制数,范围为 2~36,0 表示自动判断进制数(根据字符串前缀判断数字进制数,0x 或者 0X 表示 16 进制,0 表示 8 进制,否则表示 10 进制)。
返回值说明
  • 若转换成功,则会返回转换后的长整型数值。
  • 如果输入字符串为空字符串或者第一位非法,则返回 0。
  • 如果转换后的数值超过了长整型数值范围,则返回 LONG_MAX 或者 LONG_MIN,同时 errno 会被设置成 ERANGE。
代码示例

下面是一个简单的例子,演示如何将字符串转换为长整型数值并输出。

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char const *argv[])
{
    const char* str = "-1234567890123456";  // 输入字符串
    char* endptr;  // 定义指针,用于记录第一个不合法字符的位置
    long int val = strtol(str, &endptr, 10);  // 将字符串转换为长整型数值

    cout << "输入字符串:" << str << endl;
    cout << "转换后的数字:" << val << endl;

    if (endptr != str)  // 如果转换成功
    {
        cout << "第一个不合法的字符为:" << *endptr << endl;
    }

    return 0;
}

输出结果为:

输入字符串:-1234567890123456
转换后的数字:-1234567890123456

值得注意的是,如果输入字符串为正数,转换后的数字仍然为正数,如果输入字符串为负数,转换后的数字为负数。

总结

strol() 函数的应用非常广泛,尤其是在字符串处理方面。程序员可以通过该函数将字符串转换为长整型,便于进行数值计算。

注意在使用该函数时,需要考虑进制数和字符串是否格式正确,避免产生错误的结果。