wcstold
在头文件<wchar.h>中定义 | | |
---|---|---|
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()
),直到找到第一个非空白字符。然后,它需要尽可能多的字符来形成有效的浮点表示并将它们转换为浮点值。有效的浮点值可以是以下值之一:
- 十进制浮点表达式。它由以下部分组成:
- (可选)加号或减号
- 非空十进制数字序列可选地包含小数点字符(由当前C确定
locale
)(定义有效数字) - (可选),
e
或者E
跟随可选的负号或加号和非空序列的十进制数字(定义指数)
- 二进制浮点表达式。它由以下部分组成:
- (可选)加号或减号
0x
要么0X
- 非空的十六进制数字序列可选地包含小数点字符(由当前C确定
locale
)(定义有效数字) - (可选),
p
或者P
跟随可选的负号或加号和非空序列的十进制数字(定义指数)
- 无限表达。它由以下部分组成:
- (可选)加号或减号
INF
或者INFINITY
无视案件
- 非数字表达式。它由以下部分组成:
- (可选)加号或减号
NAN
或NAN(
char_sequence)
忽略该NAN
部分的情况。char_sequence只能包含字母数字字符。结果是安静的NaN浮点值。
- 任何其他可能被当前安装的C接受的表达式
locale
这些函数将指向的指针设置为指向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):
- 7.29.4.1.1 wcstod,wcstof和wcstold函数(p: 426-428)
- C99标准(ISO/IEC 9899:1999):
- 7.24.4.1.1 wcstod,wcstof和wcstold函数(p: 372-374)
另请参阅
strtofstrtodstrtold(C99)(C99) | 将字节字符串转换为浮点值(函数) |
---|
| wcstof,wcstod,wcstold |的C ++文档
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com