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) (задаёт мантиссу)
-
(необязательно)
eилиE, за которыми следует необязательный знак минус или плюс и непустая последовательность десятичных цифр (задаёт показатель степени по основанию 10)
| (начиная с C99) |
- любое другое выражение, которое может быть принято текущей установленной локалью C.
Функции устанавливают указатель, на который указывает str_end, так, чтобы он указывал на широкий символ, следующий за последним интерпретированным символом. Если str_end является нулевым указателем, он игнорируется.
Параметры
| str | - | указатель на завершаемую нулём широкую строку, которую требуется интерпретировать |
| str_end | - | указатель на указатель на широкий символ. |
Возвращаемое значение
Значение с плавающей точкой, соответствующее содержимому str, если выполнение прошло успешно. Если преобразованное значение выходит за пределы диапазона соответствующего возвращаемого типа, возникает ошибка диапазона и возвращается HUGE_VAL, HUGE_VALF или HUGE_VALL. Если преобразование невозможно, возвращается 0.
Пример
#include <errno.h>
#include <stdio.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
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
- 7.29.4.1.1 Функции wcstod, wcstof и wcstold (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.29.4.1.1 Функции wcstod, wcstof и wcstold (стр.: TBD)
- Стандарт 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/c/string/wide/wcstof