strtod, _strtod_l, wcstod, _wcstod_l
Converte seqüências para 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
Seqüência terminada por caractere nulo para converter.endptr
Ponteiro para o caractere que interrompe a varredura.locale
A localidade para usar.
Valor de retorno
strtod Retorna o valor do número de ponto flutuante, exceto quando a representação poderia causar um estouro de capacidade, caso a função retorna + / –HUGE_VAL. Sinal de HUGE_VAL corresponde ao sinal do valor que não pode ser representado. strtod Retorna 0 se nenhuma conversão pode ser executada ou ocorre um estouro negativo.
wcstod Retorna valores analogously para strtod. Para ambas sistema autônomo funções, errno é definido sistema autônomo ERANGE Se ocorre estouro ou estouro negativo e o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro.
See _doserrno, errno, _sys_errlist e _sys_nerr para obter mais informações sobre este e outros códigos de retorno.
Comentários
Cada função converte a seqüência de caracteres de entrada nptr para um double. The strtod função converte nptr para um valor de precisão dupla. strtod Interrompe a leitura a seqüência de caracteres nptr no primeiro caractere que não reconhece sistema autônomo parte de um número. Isso pode ser o caractere nulo de terminação.wcstod é uma versão de caractere largo da strtod; sua nptr argumento é uma seqüência de caracteres largos. Essas funções se comportam exatamente caso contrário.
Mapeamentos de rotina de texto genérica
Rotina TCHAR.H |
_UNICODE & _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcstod |
strtod |
strtod |
wcstod |
_tcstod_l |
_strtod_l |
_strtod_l |
_wcstod_l |
The LC_NUMERIC categoria de configuração da localidade corrente determina reconhecimento do caractere fracionário nptr*;* para obter mais informações, consulte setlocale.As funções sem o _l usar o sufixo a localidade corrente; _strtod_l é idêntico ao _strtod_l exceto pelo fato de que a localidade do passado em vez disso, eles usam. For more information, see Localidade.
If endptr não é NULL, um ponteiro para o caractere que parou a verificação é armazenado no local apontado pelo endptr. Se nenhuma conversão pode ser executada (nenhum dígito válido foi encontrado ou uma base inválido foi especificada), o valor de nptr é armazenado na posição apontada por endptr.
strtod espera nptr para apontar para uma seqüência de caracteres de forma a seguir:
[whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]
A whitespace may consist of space and tab characters, which are ignored; sign is either plus (+) or minus (–); and digits are one or more decimal digits.Se nenhum dígito aparecer antes do caractere fracionário, pelo menos um deve aparecer depois do caractere fracionário.Dígitos Decimal podem ser seguidos por um expoente, que consiste em uma carta introdutória (d, D, e, ou E) e, opcionalmente, inteiro com sinal. Se nem 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 interrompe a varredura.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
strtod, _strtod_l |
<stdlib.h> |
wcstod, _wcstod_l |
<stdlib.h> ou <wchar.h> |
Para obter informações adicionais 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 );
}
}
string = 3.1415926This stopped it strtod = 3.141593 Stopped scan at: This stopped it string = -10110134932This stopped it strtol = -2147483648 Stopped scan at: This stopped it string = 10110134932 strtol = 45 (base 2) Stopped scan at: 34932 strtol = 4423 (base 4) Stopped scan at: 4932 strtol = 2134108 (base 8) Stopped scan at: 932
Equivalente do NET Framework
Consulte também
Referência
Interpretação de seqüências de caractere multibyte
Seqüência de caracteres para funções de valor numérico
strtol, wcstol, _strtol_l, _wcstol_l