📜  C C++中的atol(),atoll()和atof()函数(1)

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

C/C++中的atol(),atoll()和atof()函数

在C/C++中,我们经常需要将字符串类型转换为数值类型,比如将一个存储整数的字符串转换成整型变量。这时我们可以使用以下三个函数:

  • atol():将一个ASCII码串转换成长整型(long integer)。
  • atoll():将一个ASCII码串转换成长长整型(long long integer)。
  • atof():将一个ASCII码串转换成双精度浮点数(double)。

这些函数在stdlib.h头文件中声明和定义,在程序中应该先通过:

#include <stdlib.h> // 或 #include <cstdlib>

导入。

atol()

atol()函数接受一个字符串作为参数,返回转换后的长整型数值。如果输入字符串不符合长整型数值的格式,将返回0。

下面是一个atol()的使用示例:

#include <stdlib.h>
#include <iostream>
using namespace std;

int main()
{
    char str[] = "-1234567";
    long val = atol(str);
    cout << "The converted value is " << val << endl;

    return 0;
}

上述程序将打印出:

The converted value is -1234567
atoll()

atoll()函数与atol()函数的功能类似,但它返回的是长长整型数值,可以处理更大的数值。同样,如果输入字符串不符合长长整型数值的格式,将返回0。

以下是一个atoll()的使用示例:

#include <stdlib.h>
#include <iostream>
using namespace std;

int main()
{
    char str[] = "9876543210123456789";
    long long val = atoll(str);
    cout << "The converted value is " << val << endl;

    return 0;
}

上述程序将打印出:

The converted value is 9876543210123456789
atof()

atof()函数将ASCII码串转换成双精度浮点数。同样,如果输入字符串不符合双精度浮点数的格式,将返回0.0。

以下是一个atof()的使用示例:

#include <stdlib.h>
#include <iostream>
using namespace std;

int main()
{
    char str[] = "3.1415926";
    double val = atof(str);
    cout << "The converted value is " << val << endl;

    return 0;
}

上述程序将打印出:

The converted value is 3.14159
总结

atol()atoll()atof()函数可以用于将字符串转换为数值,但考虑到转换可能会失败以及可能的错误处理,C++11更推荐使用std::stoi()std::stol()std::stoll()std::stod()等函数。这些函数可以捕获不合法的输入并产生异常,让错误处理更加优雅和安全。