strtold
, , _strtold_l
wcstold
_wcstold_l
Преобразует строки в значение long двойной точности с плавающей точкой.
Синтаксис
long double strtold(
const char *strSource,
char **endptr
);
long double _strtold_l(
const char *strSource,
char **endptr,
_locale_t locale
);
long double wcstold(
const wchar_t *strSource,
wchar_t **endptr
);
long double wcstold_l(
const wchar_t *strSource,
wchar_t **endptr,
_locale_t locale
);
Параметры
strSource
Строка, завершающаяся символом NULL, для преобразования.
endptr
Указатель на символ, который останавливает сканирование.
locale
Используемый языковой стандарт.
Возвращаемое значение
strtold
возвращает значение числа long double
с плавающей запятой, за исключением случаев, когда представление вызывает переполнение, в этом случае функция возвращает значение +/-HUGE_VALL
. Знак соответствия знаку HUGE_VALL
значения, которое не может быть представлено. strtold
возвращает 0, если преобразование не может быть выполнено или происходит потеря значимости.
wcstold
возвращает значения аналогично strtold
. Для обеих функций задано значение, errno
если возникает переполнение или переполнение, и вызывается обработчик недопустимых параметров, как описано в разделе проверкиERANGE
параметров.
Дополнительные сведения о кодах возврата см. в разделе errno
, _doserrno
_sys_errlist
и _sys_nerr
.
Замечания
Каждая функция преобразует входную строку strSource
в long double
. Функция strtold
перестает читать строку strSource
на первом символе, которую она не может распознать как часть числа. Это может быть конечный символ NULL. wcstold
— это версия strtold
с расширенными символами; ее аргумент strSource
— строка расширенных символов. В остальном эти функции работают одинаково.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
Подпрограмма TCHAR.H | _UNICODE и _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
---|---|---|---|
_tcstold |
strtold |
strtold |
wcstold |
_tcstold_l |
_strtold_l |
_strtold_l |
_wcstold_l |
Параметр категории LC_NUMERIC
текущего языкового стандарта определяет распознавание символа основания системы счисления в strSource
. Дополнительные сведения см. в разделе setlocale
, _wsetlocale
. Функции, не имеющие суффикса _l
, используют текущий языковой стандарт; _strtold_l
и _wcstold_l
идентичны _strtold
и _wcstold
за исключением того, что они используют переданный им языковой стандарт. Дополнительные сведения см. в разделе Locale.
Если endptr
это не NULL
так, указатель на символ, который остановил сканирование, хранится в расположении, на которое указывает endptr
. Если не удается выполнить преобразование (не найдены допустимые цифры или указано недопустимое основание), значение strSource
сохраняется в расположении, указанном endptr
.
Функция strtold
ожидает, что strSource
указывает на строку следующего вида:
[
whitespace
][sign
][digits
][][.digits
] [{d
e
D
| |E
| }[sign
]]digits
whitespace
может содержать пробелы и символы табуляции, которые игнорируются; sign
— это или плюс (+
), или минус (-
); digits
— это одна или несколько десятичных цифр. Если перед символом основания системы счисления нет никаких цифр, то после него должна отображаться хотя бы одна цифра. За десятичными цифрами может следовать показатель степени, который состоит из вводной буквы (d
, D
, e
или E
) и при необходимости целого числа со знаком. Если экспонентная часть или радикс не отображается, предполагается, что символ радикса следует за последней цифрой в строке. Первый символ, который не соответствует этой форме, останавливает сканирование.
Требования
Маршрут | Обязательный заголовок |
---|---|
strtold , _strtold_l |
<stdlib.h> |
wcstold , _wcstold_l |
<stdlib.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_strtold.c
// Build with: cl /W4 /Tc crt_strtold.c
// This program uses strtold to convert a
// string to a long double-precision value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string;
char *stopstring;
long double x;
string = "3.1415926535898This stopped it";
x = strtold(string, &stopstring);
printf("string = %s\n", string);
printf(" strtold = %.13Lf\n", x);
printf(" Stopped scan at: %s\n\n", stopstring);
}
string = 3.1415926535898This stopped it
strtold = 3.1415926535898
Stopped scan at: This stopped it
См. также
Преобразование данных
Поддержка математических и плавающих точек
Интерпретация последовательностей многобайтовых символов
Локаль
Строки в числовые функции значений
strtod
, , _strtod_l
wcstod
_wcstod_l
strtol
, , wcstol
_strtol_l
_wcstol_l
strtoul
, , _strtoul_l
wcstoul
_wcstoul_l
atof
, , _atof_l
_wtof
_wtof_l
localeconv
_create_locale
, _wcreate_locale
_free_locale