📅  最后修改于: 2023-12-03 14:39:37.046000             🧑  作者: Mango
在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()
等函数。这些函数可以捕获不合法的输入并产生异常,让错误处理更加优雅和安全。