strtod, _strtod_l, wcstod, _wcstod_l
Cadeias de caracteres de conversão como um valor de precisão dupla.
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
);
Parâmetros
nptr
Cadeia de caracteres nula a ser convertida.endptr
Ponteiro para o caractere que para o exame.locale
A localidade a ser usada.
Valor de retorno
strtod retorna o valor do número de ponto flutuante, exceto quando a representação resulta em um estouro, nesse caso a função retorna +/-HUGE_VAL. O sinal de HUGE_VAL corresponde ao sinal de valor que não pode ser representado. strtod retorna 0 se nenhuma conversão puder ser executada ou ocorre um estouro negativo.
Valores de retornos do wcstod análogos a strtod. Para ambas as funções, errno é definido como ERANGE se o estouro ou o estouro negativo ocorrerem e o manipulador de parâmetro inválido for invocado, como descrito em Validação do parâmetro.
Consulte _doserrno, errno, _sys_errlist, e _sys_nerr para obter mais informações sobre esse e outros códigos de retorno.
Comentários
Cada função converte a cadeia de caracteres nptr de entrada em um double. A função de strtod converte nptr a um valor de precisão dupla. strtod deixa de ler a cadeia de caracteres nptr no primeiro caractere que ela não reconhece ser parte de um número. Isso pode ser o caractere de terminação zero. wcstod é uma versão de caractere amplo de strtod; seu argumento nptr é uma cadeira de caractere longo. Essas funções se comportam exatamente o contrário.
Mapeamentos da rotina de texto genérico
Rotina TCHAR.H |
_UNICODE & _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcstod |
strtod |
strtod |
wcstod |
_tcstod_l |
_strtod_l |
_strtod_l |
_wcstod_l |
A configuração da categoria de LC_NUMERIC de localidade atual determina o reconhecimento de caracteres raiz em nptr*;* para obter mais informações, consulte setlocale. As funções sem o sufixo de _l usam a localidade atual; _strtod_l é idêntico a _strtod_l exceto que usam a localidade passada por vez. Para obter mais informações, consulte Localidade.
Se endptr não for NULL, um ponteiro para o caractere que interrompeu a verificação é armazenado no local apontado por endptr. Se nenhuma conversão puder ser executada (nenhum dígito válido foi encontrado ou uma base inválida foi especificada), o valor de nptr será armazenado no local apontado por endptr.
strtod espera nptr apontar para uma cadeia de caracteres de seguinte forma:
[whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]
Um whitespace pode consistir nos caracteres de espaço e de tabulação, que são ignorados; sign é mais (+) ou menos (–); and digits é um ou mais dígitos decimais. Se nenhum dígito aparece antes do caractere raiz, pelo menos um deve aparecer após o caractere raiz. Os dígitos decimais podem ser seguidos por um expoente, que consiste em uma letra introdutória (d, D, e ou E) e opcionalmente em um inteiro com sinal. Se uma parte do expoente ou um caractere raiz não aparecem, um caractere de raiz seguirá o último dígito da cadeia de caracteres. O primeiro caractere que não se ajusta a este formulário interrompe o exame.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
strtod, _strtod_l |
<stdlib.h> |
wcstod, _wcstod_l |
<stdlib.h> ou <wchar.h> |
Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.
Exemplo
// 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 );
}
}
Equivalência do .NET Framework
Consulte também
Referência
Interpretação de sequências de caracteres multibyte
Funções de valor da cadeia de caracteres para numérico
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l