Compartir a través de


strtold, _strtold_l, wcstold, _wcstold_l

Convierte las cadenas en un valor largo de punto flotante de precisión doble.

Sintaxis

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
);

Parámetros

strSource
Cadena terminada en NULL que se va a convertir.

endptr
Puntero al carácter que detiene el examen.

locale
Configuración regional que se va a usar.

Valor devuelto

strtold devuelve el valor del número de punto flotante como , long doubleexcepto cuando la representación provocaría un desbordamiento; en ese caso, la función devuelve +/-HUGE_VALL. El signo de HUGE_VALL coincide con el signo del valor que no se puede representar. strtold devuelve 0 si no se puede efectuar ninguna conversión o si se produce un subdesbordamiento.

wcstold devuelve valores de manera parecida a strtold. Para ambas funciones, errno se establece ERANGE en si se produce desbordamiento o subflujo y se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros.

Para obtener más información sobre los códigos de retorno, vea errno, _doserrno, _sys_errlist y _sys_nerr.

Comentarios

Cada función convierte la cadena de entrada strSource en un long double. La strtold función deja de leer la cadena strSource en el primer carácter que no puede reconocer como parte de un número. Puede ser el carácter nulo de terminación. La versión con caracteres anchos de strtold es wcstold; su argumento strSource es una cadena de caracteres anchos. Por lo demás, estas funciones se comportan exactamente igual.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina TCHAR.H _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tcstold strtold strtold wcstold
_tcstold_l _strtold_l _strtold_l _wcstold_l

El valor de la categoría LC_NUMERIC de la configuración regional actual determina el reconocimiento del carácter de base de strSource. Para más información, vea setlocale, _wsetlocale. Las funciones que no tienen el sufijo _l usan la configuración regional actual; _strtold_l y _wcstold_l son idénticos a _strtold y _wcstold, salvo que usan la configuración regional que se pasa. Para obtener más información, vea Locale.

Si endptr no NULLes , un puntero al carácter que detuvo el examen se almacena en la ubicación a endptrla que apunta . Si no se puede efectuar ninguna conversión (no se encontraron dígitos válidos o se especificó una base no válida), el valor de strSource se almacena en la ubicación a la que señala endptr.

strtold espera que strSource señale a una cadena con el formato siguiente:

[whitespace][sign][digits][.digits] [{d | D | e | E}[sign]digits]

Un whitespace puede constar de caracteres de espacio y de tabulación, que se omiten; sign es más (+) o menos (-); y digits se refiere a uno o varios dígitos decimales. Si no aparece ningún dígito antes del carácter de base, debe aparecer al menos uno después del carácter de base. Los dígitos decimales pueden ir seguidos de un exponente, que consta de una letra inicial (d, D, e o E) y un entero con signo optativo. Si no aparece ni una parte exponencial ni un carácter de base, se supone que un carácter de base sigue al último dígito de la cadena. El primer carácter que no se ajuste a este formato detiene el análisis.

Requisitos

Routine Encabezado necesario
strtold, _strtold_l <stdlib.h>
wcstold, _wcstold_l <stdlib.h> o <wchar.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// 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

Consulte también

Conversión de datos
Compatibilidad con matemáticas y punto flotante
Interpretación de secuencias de caracteres multibyte
Configuración regional
Funciones de cadena a valor numérico
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