Se recomienda usar Visual Studio 2017

strtod, _strtod_l, wcstod, _wcstod_l

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Convertir cadenas en un valor de precisión doble.

double strtod(  
   const char *nptr,  
   char **endptr   
);  
double _strtod_l(  
   const char *nptr,  
   char **endptr,  
   _locale_t locale  
);  
double wcstod(  
   const wchar_t *nptr,  
   wchar_t **endptr   
);  
double wcstod_l(  
   const wchar_t *nptr,  
   wchar_t **endptr,  
   _locale_t locale  
);  

nptr
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.

strtodDevuelve el valor del número de punto flotante, excepto cuando la representación produciría desbordamiento, en cuyo caso la función devuelve + / –HUGE_VAL. El signo de HUGE_VAL coincide con el signo del valor que no se puede representar. strtodDevuelve 0 si se puede realizar ninguna conversión o se produce un subdesbordamiento.

wcstod devuelve valores de manera parecida a strtod. Para ambas funciones, errno está establecido en ERANGE si se produce desbordamiento o subdesbordamiento y se invoca el controlador de parámetros no válidos, como se describe en validación del parámetro.

Consulte _doserrno, errno, _sys_errlist y _sys_nerr para obtener más información sobre este y otros códigos de retorno.

Cada función convierte la cadena de entrada nptr a una double. El strtod función convierte nptr en un valor de precisión doble. strtod deja de leer la cadena nptr en el primer carácter que no reconoce como parte de un número. Esto puede ser el carácter nulo de terminación. wcstod es una versión con caracteres anchos de strtod; su argumento nptr es una cadena de caracteres anchos. Por lo demás, estas funciones se comportan exactamente igual.

Asignaciones de rutina de texto genérico

Rutina TCHAR.H_UNICODE y _MBCS no definidos_MBCS definido_UNICODE definido
_tcstodstrtodstrtodwcstod
_tcstod_l_strtod_l_strtod_l_wcstod_l

El LC_NUMERIC valor de la categoría de la configuración regional actual determina el reconocimiento del carácter base en nptr ; para obtener más información, consulte setlocale. Las funciones sin el _l sufijo usar la configuración regional actual. _strtod_l es idéntico a _strtod_l salvo que usan la configuración regional que se pasa en su lugar. Para obtener más información, vea Locale.

Si endptr no es NULL, se almacena un puntero al carácter que detuvo el análisis en la ubicación a la que señala endptr. Si no se puede realizar ninguna conversión (no se encontraron dígitos válidos o se especificó una base no válida), el valor de nptr se almacena en la ubicación a la que señala endptr.

strtodespera nptr para que apunte a una cadena de la forma siguiente:

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

Un whitespace puede constar de caracteres de espacio y tabulación, que se omiten; sign sea plus (+) o un signo menos (); y digits son uno o más dígitos decimales. Si no aparece ningún dígito antes del carácter de base, al menos uno debe aparecer después del carácter de base. Los dígitos decimales pueden ir seguidos de un exponente que consta de una carta de presentación (e o E) y un entero con signo si lo desea. Si aparece una exponente parte ni un carácter de base, se supone que un carácter de base siguen el último dígito de la cadena. El primer carácter que no se ajusta a este formato detiene el análisis.

Las versiones UCRT de estas funciones no admiten la conversión de estilo de Fortran (d o D) letras exponente. Esta extensión no estándar era compatible con versiones anteriores de CRT y puede ser un cambio importante para el código.

RutinaEncabezado necesario
strtod, _strtod_lC: <stdlib.h>C++: <cstdlib > o <stdlib.h></stdlib.h> </stdlib.h>
wcstod, _wcstod_lC: <stdlib.h> or <wchar.h> C++: <cstdlib>, <stdlib.h> or <wchar.h></wchar.h></stdlib.h></wchar.h></stdlib.h>

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

// crt_strtod.c  
// This program uses strtod to convert a  
// string to a double-precision value; strtol to  
// convert a string to long integer values; and strtoul  
// to convert a string to unsigned long-integer values.  
//  
  
#include <stdlib.h>  
#include <stdio.h>  
  
int main( void )  
{  
   char   *string, *stopstring;  
   double x;  
   long   l;  
   int    base;  
   unsigned long ul;  
  
   string = "3.1415926This stopped it";  
   x = strtod( string, &stopstring );  
   printf( "string = %s\n", string );  
   printf("   strtod = %f\n", x );  
   printf("   Stopped scan at: %s\n\n", stopstring );  
  
   string = "-10110134932This stopped it";  
   l = strtol( string, &stopstring, 10 );  
   printf( "string = %s\n", string );  
   printf("   strtol = %ld\n", l );  
   printf("   Stopped scan at: %s\n\n", stopstring );  
  
   string = "10110134932";  
   printf( "string = %s\n", string );  
  
   // Convert string using base 2, 4, and 8:  
   for( base = 2; base <= 8; base *= 2 )  
   {  
      // Convert the string:  
      ul = strtoul( string, &stopstring, base );  
      printf( "   strtol = %ld (base %d)\n", ul, base );  
      printf( "   Stopped scan at: %s\n", stopstring );  
   }  
}  

string = 3.1415926This stopped it  
   strtod = 3.141593  
   Stopped scan at: This stopped it  
  
string = -10110134932This stopped it  
   strtol = -2147483648  
   Stopped scan at: This stopped it  
  
string = 10110134932  
   strtol = 45 (base 2)  
   Stopped scan at: 34932  
   strtol = 4423 (base 4)  
   Stopped scan at: 4932  
   strtol = 2134108 (base 8)  
   Stopped scan at: 932  

Conversión de datos
Compatibilidad de punto flotante
Interpretación de secuencias de caracteres Multibyte
Configuración regional
Cadena de funciones con valores numéricos
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

Mostrar: