Seqüência de funções de valor numérico
Comentários
Cada função na strtod família converte uma seqüência terminada por caractere nulo em um valor numérico.As funções disponíveis estão listadas na tabela a seguir.
Função |
Descrição |
---|---|
strtod |
Converter a seqüência de caracteres para o valor de ponto flutuante de precisão dupla |
strtol |
Converter string em inteiro longo |
strtoul |
Converter string em inteiro longo não assinado |
_strtoi64 |
Converter a seqüência de caracteres para 64 bits __int64 inteiro |
_strtoui64 |
Conversão de seqüência para não assinado de 64 bits __int64 inteiro |
wcstod, wcstol, wcstoul, and _wcstoi64 are wide-character versions of strtod, strtol, strtoul, and _strtoi64, respectively.O argumento de seqüência de caracteres para cada uma dessas funções de caractere largo é uma seqüência de caracteres largos; cada função se comporta exatamente à sua contraparte byte–character único caso contrário.
O strtod função leva dois argumentos: a primeira é a seqüência de caracteres de entrada e o segundo um ponteiro para o caractere que termina o processo de conversão.strtol, strtoul, _strtoi64 e _strtoui64 como o número base a ser usado no processo de conversão, dar um terceiro argumento.
A seqüência de caracteres de entrada é uma seqüência de caracteres que podem ser interpretados como um valor numérico do tipo especificado.Cada função interrompe a leitura a seqüência de caracteres no primeiro caractere que não reconhece como parte de um número.Isso pode ser o caractere nulo de terminação.Para strtol, strtoul, _strtoi64, e _strtoui64, o caractere de terminação também pode ser o primeiro caractere numérico maior que ou igual ao número fornecido pelo usuário base.
Se o ponteiro fornecido pelo usuário em um caractere de fim-de-conversão não está definido como Nulo em tempo de chamada, um ponteiro para o caractere que parou a verificação será armazenado em vez disso.Se nenhuma conversão pode ser realizada (não foi encontrado nenhum dígito válido ou uma base inválida foi especificada), o valor do ponteiro de seqüência de caracteres é armazenado nesse endereço.
strtodespera uma seqüência de caracteres do seguinte formato:
espaço em branco] sign] digits] **.**digits [ {d | D | e | E}signdigits
A espaço em branco pode consistir em caracteres de espaço ou tabulação, que são ignorados; sinal de está plus (+) ou sinal de subtração (–); e digits são um ou mais dígitos decimais.Se nenhum dígito aparecer antes do caractere fracionário, pelo menos um deve aparecer após o caractere fracionário.Os dígitos decimais podem ser seguidos por um expoente, que consiste em uma carta de apresentação (d, d, e, ou e) e um inteiro assinado opcionalmente.Se uma parte expoente nem um caractere fracionário aparecer, será considerado um caractere fracionário siga o último dígito na seqüência de caracteres.O primeiro caractere que não cabe neste formulário pára a varredura.
O strtol, strtoul, _strtoi64, e _strtoui64 funções esperam uma seqüência de caracteres do seguinte formato:
espaço em branco[{+ | –}]0 { x | X}]] digits
Se o argumento base estiver entre 2 e 36, ele é usado como a base do número.Se for 0, os caracteres iniciais referenciados pelo ponteiro de fim-de-conversão são usados para determinar a base.Se o primeiro caractere é 0 e o segundo caractere não é 'x' ou 'X', a seqüência de caracteres é interpretada como um inteiro octal; Caso contrário, ele é interpretado como um número decimal.Se o primeiro caractere é '0' e o segundo é o caractere 'x' ou 'X', a seqüência de caracteres é interpretada como um inteiro hexadecimal.Se o primeiro caractere é ' 1' a ' 9', a seqüência de caracteres é interpretada como um número inteiro decimal.As letras 'a' a 'z' (ou 'A' a 'Z') é atribuída os valores de 10 a 35; apenas letras cujos valores atribuídos estão menos de base são permitidos.strtoule _strtoui64 permitem que um sinal de mais (+) ou sinal de subtração (–) o prefixo de sinal. um sinal de subtração à esquerda indica que o valor de retorno será negado.
O valor de saída é afetado pela configuração do LC_NUMERIC definição de categoria da localidade; consulte setlocale para obter mais informações.As versões dessas funções, sem a _l sufixo usar o local atual para este comportamento depende da localidade; as versões com o _l sufixo são idênticas exceto que eles usam o parâmetro de localidade passado em vez disso.
Quando o valor retornado por essas funções poderia causar um estouro positivo ou negativo, ou quando a conversão não é possível, os valores de casos especiais são retornados como mostrado:
Função |
Condição |
Valor retornado |
---|---|---|
strtod |
Estouro |
+/- HUGE_VAL |
strtod |
Estouro negativo ou nenhuma conversão |
0 |
strtol |
+ Estouro |
LONG_MAX |
strtol |
-Estouro |
LONG_MIN |
strtol |
Estouro negativo ou nenhuma conversão |
0 |
_strtoi64 |
+ Estouro |
_I64_MAX |
_strtoi64 |
-Estouro |
_I64_MIN |
_strtoi64 |
Nenhuma conversão |
0 |
_strtoui64 |
Estouro |
_UI64_MAX |
_strtoui64 |
Nenhuma conversão |
0 |
_I64_MAX, _I64_MIN, e _UI64_MAX são definidos em limites.H.
wcstod, wcstol, wcstoul, _wcstoi64, and _wcstoui64 are wide-character versions of strtod, strtol, strtoul, _strtoi64, and _strtoui64, respectively; o ponteiro para um argumento de fim-de-conversão para cada uma dessas funções de caractere largo é uma seqüência de caracteres largos.Caso contrário, cada uma dessas funções de caractere largo comportamento identicamente à sua contraparte único-byte–character.