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