wcstof, wcstod, wcstold
Определено в заголовке <wchar.h> | ||
|---|---|---|
float wcstof( const wchar_t * restrict str, wchar_t ** restrict str_end ); | (с C99) | |
double wcstod( const wchar_t * str, wchar_t ** str_end ); |
(с C95) (до C99) | |
double wcstod( const wchar_t * restrict str, wchar_t ** restrict str_end ); | (с C99) | |
long double wcstold( const wchar_t * restrict str, wchar_t ** restrict str_end ); | (с C99) |
Интерпретирует значение с плавающей точкой в широкой строке, на которую указывает str.
Функция пропускает все символы пробелов (как определено iswspace), пока не будет найден первый символ, не являющийся пробелом. Затем она берет столько символов, сколько возможно, чтобы сформировать корректное представление с плавающей точкой, и преобразует их в значение с плавающей точкой. Корректное значение с плавающей точкой может быть одним из следующих:
- Десятичное представление с плавающей точкой. Оно состоит из следующих частей:
- (необязательно) знак плюс или минус
- Последовательность десятичных цифр, которая может содержать десятичную точку (как определено текущим C locale) (определяет мантиссу)
- (необязательно)
eилиE, за которыми следует необязательный знак плюс или минус и последовательность десятичных цифр (определяет показатель степени по основанию 10)
| (с C99) |
- Любое другое представление, которое может быть принято текущим C locale
Функции устанавливает указатель, на который указывает str_end, чтобы он указывал на широкий символ после последнего интерпретированного символа. Если str_end является нулевым указателем, он игнорируется.
Параметры
| 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 (с. 426-428)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.24.4.1.1 Функции wcstod, wcstof и wcstold (с. 372-374)
См. также
|
(C99)(C99) | преобразует строку байтов в значение с плавающей точкой (функция) |
Документация C++ для wcstof, wcstod, wcstold |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/string/wide/wcstof