strtol
, wcstol
, _strtol_l
, _wcstol_l
Converte uma cadeia de caracteres para um valor inteiro long
.
Sintaxe
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
Cadeia de caracteres terminada em nulo a ser convertida.
end_ptr
Um parâmetro de saída, definido para apontar para o caractere após o último caractere interpretado. Ignorado, se NULL
.
base
O número base a ser usado.
locale
Localidade a usar.
Valor retornado
strtol
, wcstol
, _strtol_l
e _wcstol_l
retornar o valor representado em string
. Eles retornarão 0 se nenhuma conversão for possível. Quando a representação causa um estouro, ela retorna LONG_MAX
ou LONG_MIN
.
errno
será definido como ERANGE
se ocorrer um estouro ou estouro negativo. Está definido como EINVAL
se string
for NULL
. Ou, se base
for diferente de zero e menor que 2, ou maior que 36. Para obter mais informações sobre ERANGE
, EINVAL
e outros códigos de retorno, confira errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Comentários
As funções strtol
, wcstol
, _strtol_l
e _wcstol_l
são convertidas string
em um long
. Elas param de ler string
no primeiro caractere não reconhecido como parte de um número. Pode ser o caractere nulo de terminação ou pode ser o primeiro caractere alfanumérico maior ou igual a base
.
wcstol
e _wcstol_l
são versões de caractere largo de strtol
e _strtol_l
. O argumento string
delas é uma cadeia de caracteres largos. Caso contrário, essas funções se comportam de forma idêntica a strtol
e _strtol_l
. A configuração de categoria LC_NUMERIC
da localidade determina o reconhecimento do caractere de base (o marcador fracionário ou ponto decimal) em string
. As funções strtol
e wcstol
usam a localidade atual. _strtol_l
e _wcstol_l
usam a localidade passada em vez disso. Para obter mais informações, confira [setlocale
] e Localidade.
Quando end_ptr
é NULL
, é ignorado. Caso contrário, um ponteiro para o caractere que parou a verificação é armazenado no local apontado por end_ptr
. Nenhuma conversão será possível se nenhum dígito válido for encontrado ou uma base inválida for especificada. O valor de string
é armazenado no local apontado por end_ptr
.
strtol
espera que string
aponte para uma cadeia de caracteres do seguinte formato:
[
whitespace
] [{+
|-
}] [0
[{X
x
| }]] []alphanumerics
Colchetes ([ ]
) envolvem elementos opcionais. Chaves e uma barra vertical ({ | }
) envolvem alternativas para um único elemento. whitespace
pode consistir em caracteres de espaço e tabulação, que são ignorados. alphanumerics
são dígitos decimais ou as letras 'a'
através 'z'
(ou 'A'
através ).'Z'
O primeiro caractere que não é adequado a esse formato interrompe a verificação. Se base
estiver entre 2 e 36, ele será usado como a base do número. Se base
for 0
, os caracteres inicias da cadeia de caracteres apontada por string
serão usados para determinar a base. Se o primeiro caractere for 0
e o segundo caractere não for 'x'
nem 'X'
, a cadeia de caracteres será interpretada como um inteiro octal. Se o primeiro caractere for '0'
e o segundo caractere for 'x'
ou 'X'
, a cadeia de caracteres será interpretada como um inteiro hexadecimal. Se o primeiro caractere for de '1'
até '9'
, a cadeia de caracteres será interpretada como um inteiro hexadecimal. As letras 'a'
até 'z'
(ou 'A'
até 'Z'
) são atribuídas aos valores de 10 a 35. A verificação só permite letras cujos valores são menores que base
. O primeiro caractere fora do intervalo da base interrompe o exame. Por exemplo, suponha que string
comece com "01"
. Se base
for 0
, o verificador pressupõe que seja um inteiro octal. Um caractere '8'
ou '9'
interrompe a verificação.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Mapeamentos de rotina de texto genérico
Rotina TCHAR.H | _UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcstol |
strtol |
strtol |
wcstol |
_tcstol_l |
_strtol_l |
_strtol_l |
_wcstol_l |
Requisitos
Rotina | Cabeçalho necessário |
---|---|
strtol |
<stdlib.h> |
wcstol |
<stdlib.h> ou <wchar.h> |
_strtol_l |
<stdlib.h> |
_wcstol_l |
<stdlib.h> ou <wchar.h> |
As funções _strtol_l
e _wcstol_l
são específicas da Microsoft, não fazem parte da biblioteca C padrão. Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
Confira o exemplo de strtod
.
Confira também
Conversão de dados
Localidade
localeconv
setlocale
, _wsetlocale
String para funções de 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