wcstold
wcstof, wcstod, wcstold
在头文件 | | |
---|---|---|
float wcstof(const wchar_t * str,wchar_t ** str_end); | | (自C99以来) |
double wcstod(const wchar_t * str,wchar_t ** str_end); | | (自C95以来) |
long double wcstold(const wchar_t * str,wchar_t ** str_end); | | (自C99以来) |
解释由指向的宽字符串中的浮点值str
。
函数放弃任何空白字符(由其决定std::isspace()
),直到找到第一个非空白字符。然后,它需要尽可能多的字符来形成有效的浮点表示并将它们转换为浮点值。有效的浮点值可以是以下值之一:
- 十进制浮点表达式。它由以下部分组成:
这些函数将指向的指针设置为指向str_end
最后解释的字符后面的宽字符。如果str_end
是NULL
,它被忽略。
参数
str | - | 指向要解释的以空字符结尾的宽字符串的指针 |
---|---|---|
str_end | - | 指向宽字符的指针。 |
返回值
对应str
于成功内容的浮点值。如果转换后的值脱离的相应返回类型的范围时,发生和范围错误HUGE_VAL
,HUGE_VALF
或HUGE_VALL
返回。如果不能执行转换,则返回0
。
示例
#include <stdio.h>
#include <errno.h>
#include <wchar.h>
int main(void)
{
const wchar_t *p = L"111.11 -2.22 0X1.BC70A3D70A3D7P+6 1.18973e+4932zzz";
printf("Parsing L\"%ls\":\n", p
wchar_t *end;
for (double f = wcstod(p, &end p != end; f = wcstod(p, &end))
{
printf("'%.*ls' -> ", (int)(end-p), p
p = end;
if (errno == ERANGE){
printf("range error, got "
errno = 0;
}
printf("%f\n", f
}
}
输出:
Parsing L"111.11 -2.22 0X1.BC70A3D70A3D7P+6 1.18973e+4932zzz":
'111.11' -> 111.110000
' -2.22' -> -2.220000
' 0X1.BC70A3D70A3D7P+6' -> 111.110000
' 1.18973e+4932' -> range error, got inf
参考
- C11标准(ISO/IEC 9899:2011):
另请参阅
strtofstrtodstrtold(C99)(C99) | 将字节字符串转换为浮点值(函数) |
---|
| wcstof,wcstod,wcstold |的C ++文档