strtold
函数 <cstdlib>
long double strtold (const char* str, char** endptr);
将字符串转换为 long double
解析C字符串str,将其内容解释为浮点数(根据当前语言环境),并以long double返回其值。
如果endptr不是空指针,该函数还将endptr的值设置为指向数字后面的第一个字符。
这个函数类似于strtod来解释字符串,但会产生long double类型的数字
(有关解释过程的详细信息,请参阅
strtod)。
☲ 参数
str
以浮点数表示开头的C字符串。
endptr
对已经分配的char*类型对象的引用,该对象的值由函数设置为数值后的str中的下一个字符。
这个参数也可以是一个空指针,在这种情况下它不会被使用。
☉ 返回值
如果成功,该函数将转换后的整数值作为long int 型值返回。
如果不能执行有效的转换,则函数返回0 (0.0L)。
如果正确的值超出了该类型的可表示值的范围,则返回正的或负的
HUGE_VALL,
并将
errno设置为ERANGE。
如果正确的值会导致下溢,则函数返回一个值,其大小不大于最小的标准化正数
(在这种情况下,一些库实现也可能将
errno设置为ERANGE)。
☣ 示例
/* strtold example */
#include <stdio.h> /* printf, NULL */
#include <stdlib.h> /* strtold */
int main ()
{
char szOrbits[] = "90613.305 365.24";
char * pEnd;
long double f1, f2;
f1 = strtold (szOrbits, &pEnd);
f2 = strtold (pEnd, NULL);
printf ("Pluto takes %.2Lf years to complete an orbit.\n", f1/f2);
return 0;
}
|
输出:
Pluto takes 248.09 years to complete an orbit.
↭ 数据竞争
str指向的数组被访问,endptr指向的指针被修改(如果不是null)。
❆ 异常(c++)
无抛出保证:此函数从不抛出异常。
如果str没有指向有效的C-string,或者endptr没有指向有效的指针对象,将导致未定义的行为。
🍄 另请参阅
strtol |
将string转换为long integer(function) |
strtold |
将string转换为 long double (function) |
atof |
将字符串转换为 double (function ) |