strtod, _strtod_l, wcstod, _wcstod_l
Converte le stringhe in un valore a precisione doppia.
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
);
Parametri
nptr
Stringa con terminazione null da convertire.endptr
Puntatore al carattere che arresta la scansione.locale
Impostazioni locali da utilizzare.
Valore restituito
strtod restituisce il valore di numeri a virgola mobile, tranne quando la rappresentazione può provocare un overflow, in questo caso la funzione restituisce +/-HUGE_VAL. Il segno HUGE_VAL corrisponde al segno del valore che non può essere rappresentato. strtod restituisce 0 se nessuna conversione può essere eseguita o se un underflow si verifica.
wcstod restituisce i valori analogamente a strtod. Per entrambe le funzioni, errno è impostato su ERANGE se un overflow o un underflow si verificano e il gestore non valido di parametro viene richiamato,la procedura viene descritta in Convalida dei parametri.
Vedere _doserrno, errno, _sys_errlist, e _sys_nerr per ulteriori informazioni su questo, e altri, codici restituiti.
Note
Ogni funzione converte la stringa di input nptr in double. La funzione strtod converte nptr a un valore a precisione doppia. La funzione strtod arresta la lettura della stringa nptr al primo carattere che non riconosce come parte di un numero. Questo può rappresentare il carattere di terminazione null. wcstod è una versione a caratteri estesi di strtod; l'argomento nptr è una stringa di caratteri estesi. Altrimenti queste funzioni si comportano in modo identico.
Mapping di routine di testo generico
Routine TCHAR.H |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcstod |
strtod |
strtod |
wcstod |
_tcstod_l |
_strtod_l |
_strtod_l |
_wcstod_l |
La LC_NUMERIC impostazione locale corrente di categoria, determina il riconoscimento del carattere radice in nptr*;* per ulteriori informazioni, vedere setlocale. Le funzioni senza il suffisso _l utilizzano le impostazioni locali correnti, _strtod_l è identico a _strtod_l con la differenza che utilizzano le impostazioni locali passate in alternativa. Per ulteriori informazioni, vedere Impostazioni locali.
Se endptr non è NULL, il puntatore al carattere che arresta la scansione viene memorizzato nella locazione di memoria indicata da endptr. Se nessuna conversione può essere eseguita (nessuna cifra valida è stata trovata o è stata specificata una base non valida), il valore di nptr viene archiviato all'indirizzo puntato da endptr.
strtod richiede che nptr punti ad una stringa nel seguente formato:
[whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]
Uno whitespace può essere costituito dallo spazio o di caratteri di tabulazione, che vengono ignorati; sign è sia più (+) che meno (–); e digits è una o più cifre decimali. Se nessuna cifra viene visualizzata prima del carattere radice, almeno uno deve apparire 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 opzionalmente da un numero Signed Integer. Se né una parte dell'esponente né un carattere di base viene visualizzato, un carattere di base viene utilizzato per seguire l'ultima cifra nella stringa. Il primo carattere non idoneo arresta la scansione.
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
strtod, _strtod_l |
<stdlib.h> |
wcstod, _wcstod_l |
<stdlib.h> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.
Esempio
// 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 );
}
}
Equivalente .NET Framework
Vedere anche
Riferimenti
Interpretazione di sequenze di caratteri multibyte
Funzioni da stringa a valore numerico
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l