Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Converte cadeias de caracteres em um valor de ponto flutuante de precisão dupla longo.
Sintaxe
long double strtold(
const char *strSource,
char **endptr
);
long double _strtold_l(
const char *strSource,
char **endptr,
_locale_t locale
);
long double wcstold(
const wchar_t *strSource,
wchar_t **endptr
);
long double wcstold_l(
const wchar_t *strSource,
wchar_t **endptr,
_locale_t locale
);
Parâmetros
strSource
Cadeia de caracteres terminada em nulo a ser convertida.
endptr
Ponteiro para o caractere que interrompe o exame.
locale
A localidade a ser usada.
Valor retornado
strtold retorna o valor do número de ponto flutuante como um long double, exceto quando a representação causaria um estouro — nesse caso, a função retorna +/-HUGE_VALL. O sinal de HUGE_VALL coincide com o sinal do valor que não pode ser representado. strtold retorna 0 se nenhuma conversão pode ser realizada ou ocorrerá um estouro negativo.
wcstold retorna valores de maneira semelhante a strtold. Para ambas as funções, errno é definido como ERANGE se ocorrer estouro ou estouro insuficiente e o manipulador de parâmetro inválido for invocado, conforme descrito em Validação de parâmetro.
Para obter mais informações sobre códigos de retorno, confira errno, _doserrno, _sys_errlist e _sys_nerr.
Comentários
Cada função converte a cadeia de caracteres de entrada strSource para um long double. A strtold função para de ler a cadeia de caracteres strSource no primeiro caractere que não consegue reconhecer como parte de um número. Pode ser o caractere nulo de terminação. A versão de caractere largo de strtold é wcstold; seu argumento strSource é uma cadeia de caracteres largos. Caso contrário, essas funções se comportam de forma idêntica.
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 |
|---|---|---|---|
_tcstold |
strtold |
strtold |
wcstold |
_tcstold_l |
_strtold_l |
_strtold_l |
_wcstold_l |
A configuração LC_NUMERIC de categoria da localidade atual determina o reconhecimento do caractere fracionário strSource. Para obter mais informações, consulte setlocalee _wsetlocale. As funções sem o _l sufixo usam a localidade atual; _strtold_l e _wcstold_l são idênticos aos _strtold e _wcstold, exceto que usam a localidade que é informada. Para obter mais informações, consulte Localidade.
Se endptr não NULLfor , um ponteiro para o caractere que interrompeu a verificação será 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 strSource será armazenado no local apontado por endptr.
strtold espera que strSource aponte para uma cadeia de caracteres do seguinte formato:
[
whitespace][sign][digits][.digits][{deD| |E| }[sign]]digits
Um whitespace consiste em caracteres de espaço ou tabulação, que são ignorados; sign é um sinal de mais (+) ou menos (-); e digits é composto por um ou mais dígitos decimais. Se nenhum dígito aparecer antes do caractere fracionário, pelo menos um deverá aparecer após o caractere fracionário. Os dígitos decimais podem ser seguidos por um expoente, que consiste em uma letra de apresentação (d, D, e ou E) e um inteiro opcionalmente com sinal. Se nenhuma parte do expoente ou caractere de base aparecer, assume-se que um caractere de base segue o último dígito da cadeia de caracteres. O primeiro caractere que não é adequado a esse formato interrompe a verificação.
Requisitos
| Rotina | Cabeçalho necessário |
|---|---|
strtold, _strtold_l |
<stdlib.h> |
wcstold, _wcstold_l |
<stdlib.h> ou <wchar.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// crt_strtold.c
// Build with: cl /W4 /Tc crt_strtold.c
// This program uses strtold to convert a
// string to a long double-precision value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string;
char *stopstring;
long double x;
string = "3.1415926535898This stopped it";
x = strtold(string, &stopstring);
printf("string = %s\n", string);
printf(" strtold = %.13Lf\n", x);
printf(" Stopped scan at: %s\n\n", stopstring);
}
string = 3.1415926535898This stopped it
strtold = 3.1415926535898
Stopped scan at: This stopped it
Confira também
Conversão de dados
Suporte matemático e de ponto flutuante
Interpretação de sequências de caracteres multibyte
Localidade
String para funções de valor numérico
strtod, _strtod_l, wcstod, _wcstod_l
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l
atof, _atof_l, _wtof, _wtof_l
localeconv
_create_locale, _wcreate_locale
_free_locale