C90(C++98) | 使用“C”语言环境的strtod 的有效浮点数由可选符号字符(+或-)和数字序列组成, 可以包含小数点字符(.),可选后跟指数部分(e或E字符后跟可选符号和数字序列) |
C99/C11(C++11) | 使用“C”语言环境的strtod 的有效浮点数由可选的符号字符(+或-)组成,后面跟着一个:
- 数字序列,可选包含小数点字符(.),可选后跟指数部分(e或E字符后跟一个可选符号和数字序列)。 - 一个0x或0X前缀,然后是一个十六进制数字序列(如isxdigit),可选地包含一个句点,将整数和小数部分分开。 可选后跟2次幂(p或P字符后跟一个可选符号和一个十六进制数字序列)。 - INF或INFINITY(忽略大小写)。 - NAN或NANsequence(忽略大小写),其中sequence是字符序列,每个字符要么是字母数字字符(如isalnum),要么是下划线字符(_)。 |
C90(C++98) | 如果正确的值会导致下溢,则函数返回一个大小不大于最小正数,并将errno设置为ERANGE。 |
C99/C11(C++11) | 如果正确的值会导致下溢,则函数返回一个大小不大于最小的正数, (在这种情况下,一些库实现也可能将errno设置为ERANGE)。 |
/* strtod example */ #include <stdio.h> /* printf, NULL */ #include <stdlib.h> /* strtod */ int main () { char szOrbits[] = "365.24 29.53"; char* pEnd; double d1, d2; d1 = strtod (szOrbits, &pEnd); d2 = strtod (pEnd, NULL); printf ("The moon completes %.2f orbits per Earth year.\n", d1/d2); return 0; } |
strtol | 将字符串转换为long integer(function ) |
strtoul | 将字符串转换为unsigned long integer (function ) |
atof | 将字符串转换为 double (function ) |