函数
<cwchar>

wcstod

double wcstod (const wchar_t* str, wchar_t** endptr);
将宽字符串转换为double
解析 C 宽字符串 str,将其内容解释为浮点数,并以double类型返回其值。如果 endptr 不是空指针,则该函数还会将 endptr 的值设置为指向数字后面的第一个字符。

这是 strtod<cstdlib>)的宽字符等效函数,其解释 str 的方式与 strtod 相同。

参数

str
以浮点数表示形式开头的 C 宽字符串。
endptr
对一个已分配的wchar_t*类型对象的引用,函数会将其值设置为 str 中数值部分之后的下一个字符。
此参数也可以是空指针,在这种情况下,函数不会使用它。

返回值

成功时,函数返回转换后的浮点数,类型为double.
如果无法执行有效的转换,则函数返回零(0.0).
如果正确值超出该类型可表示值的范围,则返回正的或负的 HUGE_VAL,并将 errno 设置为 ERANGE
如果正确值会导致下溢,则函数返回一个其绝对值不大于最小的归一化正数的值(某些库实现也可能在此情况下将 errno 设置为 ERANGE)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
/* wcstod example */
#include <wchar.h>

int main ()
{
  wchar_t szOrbits[] = L"365.24 29.53";
  wchar_t * pEnd;
  double d1, d2;
  d1 = wcstod (szOrbits,&pEnd);
  d2 = wcstod (pEnd,NULL);
  wprintf (L"The moon completes %.2f orbits per Earth year.\n", d1/d2);
  return 0;
}

输出

The moon completes 12.37 orbits per Earth year.


另见