C++官网参考链接:https://cplusplus.com/reference/cstdlib/atof/
函数
<cstdlib>
atof
double atof (const char* str);
将字符串转换为double
解析C字符串str,将其内容解释为浮点数,并将其值返回为double。
该函数首先根据需要丢弃尽可能多的空白字符(如在isspace中返回true的字符),直到找到第一个非空白字符。然后,从这个字符开始,按照类似于浮点字面量的语法(见下文)获取尽可能多的有效字符,并将它们解释为数值。最后一个有效字符之后的字符串将被忽略,对该函数的行为没有影响。
C90(C++98)
使用“C”语言环境的atof的有效浮点数由一个可选的符号字符(+或-),后跟一个数字序列(可选地包含一个小数点字符(.),可选地后跟一个指数部分(一个e或E字符后跟一个可选的符号和一个数字序列)组成。
C99/C11(C++11)
使用“C”语言环境的atof的有效浮点数由一个可选的符号字符(+或-)组成,后跟以下其中之一:
-一个数字序列,可选地包含一个小数点字符(.),可选地后跟一个指数部分(一个e或E字符后跟一个可选的符号和一个数字序列)。
-一个0x或0X前缀,然后是一个十六进制数字序列(如在isxdigit中返回true的字符),可选地包含一个分隔整数部分和小数部分的句号。后面可选地跟着2的指数幂(一个p或P字符后面跟着一个可选符号和一个十六进制数字序列)。
-INF或INFINITY(忽略大小写)。
-NAN或NANsequence(忽略大小写),其中sequence是字符序列,每个字符要么是字母数字字符(如在isalnum中返回true的字符),要么是下划线字符(_)。
如果str中的第一个非空白字符序列没有形成刚才定义的有效浮点数,或者由于str为空或只包含空白字符而不存在这样的序列,则不执行转换,函数返回0.0。
形参
str
以浮点数表示开头的C字符串。
返回值
如果成功,该函数将转换后的浮点数作为double值返回。
如果不能执行有效的转换,则函数返回0(0.0)。
如果转换的值超出了double类型的可表示值的范围,则会导致未定义的行为。如果可能,请参阅strtod以获得更健壮的跨平台替代方案。
用例
/* atof example: sine calculator */
#include <stdio.h> /* printf, fgets */
#include <stdlib.h> /* atof */
#include <math.h> /* sin */
int main ()
{
double n,m;
double pi=3.1415926535;
char buffer[256];
printf ("Enter degrees: ");
fgets (buffer,256,stdin);
n = atof (buffer);
m = sin (n*pi/180);
printf ("The sine of %f degrees is %f\n" , n, m);
return 0;
}
输出:
数据竞争
访问由str指向的数组。
异常(C++)
无抛出保证:此函数从不抛出异常。
如果str不指向有效的C字符串,或者转换后的值超出了double类型所表示的值的范围,则会导致未定义行为。