strtold
, _strtold_l
, wcstold
_wcstold_l
Converte le stringhe in un valore a virgola mobile e precisione long double.
Sintassi
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
);
Parametri
strSource
Stringa con terminazione Null da convertire.
endptr
Puntatore al carattere che interrompe la lettura.
locale
Impostazioni locali da usare.
Valore restituito
strtold
restituisce il valore del numero a virgola mobile come long double
, tranne quando la rappresentazione provocherebbe un overflow, in tal caso la funzione restituisce +/-HUGE_VALL
. Il segno di HUGE_VALL
corrisponde al segno del valore che non può essere rappresentato. strtold
restituisce 0 se è non possibile eseguire alcuna conversione oppure se si verifica un overflow.
wcstold
restituisce i valori in modo analogo a strtold
. Per entrambe le funzioni, errno
è impostato su ERANGE
se si verifica l'overflow o l'underflow e viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri.
Per altre informazioni sui codici restituiti, vedere errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Osservazioni:
Ogni funzione converte la stringa di input strSource
in un valore long double
. La strtold
funzione interrompe la lettura della stringa strSource
al primo carattere che non è in grado di riconoscere come parte di un numero. Può trattarsi del carattere Null di terminazione. La versione a caratteri wide di strtold
è wcstold
. Il relativo argomento strSource
è una stringa di caratteri wide. In caso contrario, il comportamento di queste funzioni è identico.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
Routine TCHAR.H | _UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcstold |
strtold |
strtold |
wcstold |
_tcstold_l |
_strtold_l |
_strtold_l |
_wcstold_l |
L'impostazione della categoria LC_NUMERIC
delle impostazioni locali correnti determina il riconoscimento del carattere di base in strSource
. Per altre informazioni, vedere setlocale
e _wsetlocale
. Le funzioni senza il suffisso _l
usano le impostazioni locali correnti. _strtold_l
e _wcstold_l
sono identiche a _strtold
e _wcstold
, ma usano le impostazioni locali passate. Per altre informazioni, vedere Locale.
Se endptr
non NULL
è , un puntatore al carattere che ha arrestato l'analisi viene archiviato nella posizione a endptr
cui punta . Se è non possibile eseguire alcuna conversione (non vengono trovate cifre valide o viene specificata una base non valida), il valore di strSource
viene archiviato in corrispondenza della posizione a cui punta endptr
.
strtold
prevede che strSource
punti a una stringa nel formato seguente:
[
whitespace
][sign
][digits
][.digits
] [{d
e
D
| |E
| }[sign
]]digits
whitespace
può essere costituito da caratteri di spazio e tabulazione, che vengono ignorati. sign
è più (+
) o meno (-
) e digits
indica una o più cifre decimali. Se non viene visualizzata alcuna cifra prima del carattere di base, deve essercene almeno una dopo il carattere di base. Le cifre decimali possono essere seguite da un esponente, costituito da una lettera introduttiva (d
, D
, e
o E
) e un intero con segno facoltativo. Se non viene visualizzato alcun carattere esponente o radix, si presuppone che un carattere radix segua l'ultima cifra nella stringa. Il primo carattere che non rientra in questo modulo interrompe l'analisi.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
strtold , _strtold_l |
<stdlib.h> |
wcstold , _wcstold_l |
<stdlib.h> o <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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
Vedi anche
Conversione dati
Supporto matematico e a virgola mobile
Interpretazione di sequenze di caratteri multibyte
impostazioni locali
Funzioni string to numeric value (Da stringa a valore numerico)
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