Compartir a través de


strtol, wcstol, , _strtol_l, _wcstol_l

Convierte cadenas en un valor entero long.

Sintaxis

long strtol(
   const char *string,
   char **end_ptr,
   int base
);
long wcstol(
   const wchar_t *string,
   wchar_t **end_ptr,
   int base
);
long _strtol_l(
   const char *string,
   char **end_ptr,
   int base,
   _locale_t locale
);
long _wcstol_l(
   const wchar_t *string,
   wchar_t **end_ptr,
   int base,
   _locale_t locale
);

Parámetros

string
Cadena terminada en NULL que se va a convertir.

end_ptr
Parámetro de salida, establecido para que apunte al carácter después del último carácter interpretado. Se omite, si es NULL.

base
Base numérica que se va a usar.

locale
Configuración regional que se va a usar.

Valor devuelto

strtol, wcstol, _strtol_l y _wcstol_l devuelven el valor representado en string. Devuelven 0 si no es posible realizar ninguna conversión. Cuando la representación fuera a provocar un desbordamiento, devolverían LONG_MAX o LONG_MIN.

errno se establece en ERANGE si se produce un desbordamiento o un subdesbordamiento. Se establece en EINVAL si string es NULL. O, si base es distinto de cero y mejor que 2, o mayor que 36. Para más información sobre ERANGE, EINVAL y otros códigos de retorno, consulte errno, _doserrno_sys_errlist y _sys_nerr.

Comentarios

Las funciones strtol, wcstol, _strtol_l y _wcstol_l convierten string en un valor long. Dejan de leer string en el primer carácter no reconocido como parte de un número. Puede tratarse del carácter nulo de terminación o del primer carácter numérico mayor o igual que base.

wcstol y _wcstol_l son versiones con caracteres anchos de strtol y _strtol_l, respectivamente. Su argumento string es una cadena de caracteres anchos. Por lo demás, estas funciones se comportan exactamente igual que strtol o _strtol_l. El valor de categoría LC_NUMERIC de la configuración regional determina el reconocimiento del carácter base (el marcador fraccionario o el separador decimal) en string. Las funciones strtol y wcstol usan la configuración regional actual. En cambio, _strtol_l y _wcstol_l usan la configuración regional pasada. Para más información, consulte [setlocale] y Configuración regional.

Cuando end_ptr es NULL, se omite. De lo contrario, se almacena un puntero al carácter que detuvo el análisis en la ubicación a la que apunta end_ptr. No se puede realizar ninguna conversión si no se encuentran dígitos válidos o se especifica una base no válida. El valor de string se almacena entonces en la ubicación a la que apunta end_ptr.

strtol espera que string señale a una cadena con el formato siguiente:

[] [whitespace{+ | -}] [0 [{ x | X }]] [alphanumerics]

Los corchetes ([ ]) rodean los elementos opcionales. Las llaves y una barra vertical ({ | }) rodean alternativas para un solo elemento. whitespace puede constar de caracteres de espacio y tabulación, que se omiten. alphanumerics son dígitos decimales o letras 'a' a través 'z' de (o 'A' a través de 'Z'). El primer carácter que no se ajuste a este formato detiene el análisis. Si base está entre 2 y 36, se usa como base del número. Si base es 0, los caracteres iniciales de la cadena a la que apunta string se usan para determinar la base. Si el primer carácter es 0 y el segundo carácter no es 'x' ni 'X', la cadena se interpreta como entero octal. Si el primer carácter es '0' y el segundo carácter es 'x' o 'X', la cadena se interpreta como entero hexadecimal. Si el primer carácter está entre '1' y '9', la cadena se interpreta como entero decimal. A las letras de la 'a' a la 'z' (o de la 'A' a la 'Z') se les asignan los valores del 10 al 35. El examen solo permite letras cuyos valores son menores que base. El primer carácter que está fuera del intervalo de la base detiene el análisis. Por ejemplo, supongamos que string comienza por "01". Si base es 0, el examen supone que es un entero octal. Un carácter '8' o '9' detiene el examen.

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
_tcstol strtol strtol wcstol
_tcstol_l _strtol_l _strtol_l _wcstol_l

Requisitos

Routine Encabezado necesario
strtol <stdlib.h>
wcstol <stdlib.h> o <wchar.h>
_strtol_l <stdlib.h>
_wcstol_l <stdlib.h> o <wchar.h>

Las funciones _strtol_l y _wcstol_l son específicas de Microsoft, no forman parte de la Biblioteca estándar de C. Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

Vea el ejemplo de strtod.

Consulte también

Conversión de datos
Configuración regional
localeconv
setlocale, _wsetlocale
Funciones de cadena a valor numérico
strtod, _strtod_l, , wcstod, _wcstod_l
strtoll, _strtoll_l, , wcstoll, _wcstoll_l
strtoul, _strtoul_l, , wcstoul, _wcstoul_l
atof, _atof_l, , _wtof, _wtof_l