strtod, _strtod_l, wcstod, _wcstod_l
Converta seqüências de caracteres em 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
strtodRetorna o valor do número de ponto flutuante, exceto quando a representação poderia causar um estouro, em que caso a função retorna + / –HUGE_VAL.O sinal de HUGE_VAL coincide com o sinal do valor que não pode ser representado.strtodRetorna 0 se nenhuma conversão pode ser executada ou ocorrerá um estouro negativo.
wcstodRetorna valores analogamente para strtod.Para ambas as funções, errno for definido como ERANGE se ocorre estouro positivo ou negativo e o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.
Consulte _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.O strtod função converte nptr a um valor de precisão dupla.strtodInterrompe a leitura a seqüência de caracteres nptr no primeiro caractere que não reconhece como parte de um número.Isso pode ser o caractere nulo de terminação.wcstodé uma versão de caractere largo de 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érico
TCHAR.Rotina H |
_ Unicode & _ MBCS do arquivo não definido |
_ MBCS do arquivo definido |
_ Unicode definido |
---|---|---|---|
_tcstod |
strtod |
strtod |
wcstod |
_tcstod_l |
_strtod_l |
_strtod_l |
_wcstod_l |
O LC_NUMERIC definição de categoria da localidade atual determina o reconhecimento do caractere fracionário nptr*;* para obter mais informações, consulte setlocale.As funções, sem a _l sufixo usam a localidade atual; _strtod_lé idêntico ao _strtod_l , exceto que eles usam a localidade do passado em vez disso.Para obter mais informações, consulte Localidade.
Se 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 realizada (não foi encontrado nenhum dígito válido ou uma base inválida foi especificada), o valor de nptr é armazenado no local apontado pelo endptr.
strtodespera nptr para apontar para uma seqüência de caracteres do seguinte formato:
[whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]
A whitespace pode consistir em caracteres de espaço e tabulação, que são ignorados; signé 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.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
strtod, _strtod_l |
<stdlib.h> |
wcstod, _wcstod_l |
<stdlib.h> ou <wchar.h> |
Para obter 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 seqüências de caracteres Multibyte
Seqüência de funções de valor numérico
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l