Funzioni da stringa a valore numericoString to Numeric Value Functions

NoteRemarks

Ogni funzione della famiglia strtod converte una stringa con terminazione Null in un valore numerico.Each function in the strtod family converts a null-terminated string to a numeric value. Nella tabella seguente sono elencate le funzioni disponibili.The available functions are listed in the following table.

FunzioneFunction DescrizioneDescription
strtod Converte una stringa in un valore a virgola mobile a precisione doppiaConvert string to double-precision floating point value
strtol Converte una stringa in un long integerConvert string to long integer
strtoul Converte una stringa in un unsigned long integerConvert string to unsigned long integer
_strtoi64 Converte una stringa in un integer __int64 a 64 bitConvert string to 64-bit __int64 integer
_strtoui64 Converte una stringa in un unsigned integer __int64 a 64 bitConvert string to unsigned 64-bit __int64 integer

wcstod, wcstol, wcstoul e _wcstoi64 sono versioni a caratteri wide rispettivamente di strtod, strtol, strtoul e _strtoi64.wcstod, wcstol, wcstoul, and _wcstoi64 are wide-character versions of strtod, strtol, strtoul, and _strtoi64, respectively. L'argomento di stringa per ognuna di queste funzioni di caratteri wide è una stringa di caratteri wide. Ogni funzione si comporta in maniera identica alla relativa controparte di caratteri a un byte.The string argument to each of these wide-character functions is a wide-character string; each function behaves identically to its single-byte-character counterpart otherwise.

La funzione strtod accetta due argomenti: il primo è la stringa di input e il secondo è un puntatore al carattere che termina il processo di conversione.The strtod function takes two arguments: the first is the input string, and the second a pointer to the character which ends the conversion process. strtol, strtoul, _strtoi64 e _strtoui64 accettano un terzo argomento come base numerica da usare nel processo di conversione.strtol, strtoul, _strtoi64 and _strtoui64 take a third argument as the number base to use in the conversion process.

La stringa di input è una sequenza di caratteri che può essere interpretata come valore numerico del tipo specificato.The input string is a sequence of characters that can be interpreted as a numerical value of the specified type. Ogni funzione interrompe la lettura della stringa in corrispondenza del primo carattere che non può riconoscere come parte di un numero.Each function stops reading the string at the first character it cannot recognize as part of a number. Questo può essere il carattere Null di terminazione.This may be the terminating null character. Per strtol, strtoul, _strtoi64 e _strtoui64, il carattere di terminazione può anche essere il primo carattere numerico maggiore o uguale alla base numerica specificata dall'utente.For strtol, strtoul, _strtoi64, and _strtoui64, this terminating character can also be the first numeric character greater than or equal to the user-supplied number base.

Se il puntatore specificato dall'utente in un carattere di fine di conversione non è impostato su NULL in fase di chiamata, verrà archiviato un puntatore al carattere che ha interrotto l'analisi.If the user-supplied pointer to an end-of-conversion character is not set to NULL at call time, a pointer to the character that stopped the scan will be stored there instead. Se è non possibile eseguire alcuna conversione (non sono state trovate cifre valide o è stata specificata una base non valida), il valore puntatore della stringa viene archiviato in tale indirizzo.If no conversion can be performed (no valid digits were found or an invalid base was specified), the value of the string pointer is stored at that address.

strtod prevede una stringa nel formato seguente:strtod expects a string of the following form:

[whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits][whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]

Uno spazio vuoto può essere costituito da spazi o caratteri di tabulazione, che vengono ignorati; sign è il segno di addizione (+) o di sottrazione (-); e digits corrisponde a una o più cifre decimali.A whitespace may consist of space or tab characters, which are ignored; sign is either plus (+) or minus (-); and digits are one or more decimal digits. Se non viene visualizzata alcuna cifra prima del carattere di base, deve essercene almeno una dopo il carattere di base.If no digits appear before the radix character, at least one must appear after the radix character. Le cifre decimali possono essere seguite da un esponente, costituito da una lettera introduttiva (d, D, e o E) e facoltativamente da un intero con segno.The decimal digits can be followed by an exponent, which consists of an introductory letter (d, D, e, or E) and an optionally signed integer. Se non viene visualizzata una parte esponente né un carattere di base, si presuppone che l'ultima cifra nella stringa sia seguita da un carattere di base.If neither an exponent part nor a radix character appears, a radix character is assumed to follow the last digit in the string. Il primo carattere che non corrisponde a questo formato interrompe la lettura.The first character that does not fit this form stops the scan.

Le funzioni strtol, strtoul, _strtoi64 e _strtoui64 prevedono una stringa nel formato seguente:The strtol, strtoul, _strtoi64, and _strtoui64 functions expect a string of the following form:

[whitespace] [{+ | -}] [0 [{ x | X }]] [digits][whitespace] [{+ | -}] [0 [{ x | X }]] [digits]

Se l'argomento di base è incluso tra 2 e 36, viene usato come base del numero.If the base argument is between 2 and 36, then it is used as the base of the number. Se è 0, per determinare la base vengono usati i caratteri iniziali a cui fa riferimento il puntatore di fine della conversione.If it is 0, the initial characters referenced to by the end-of-conversion pointer are used to determine the base. Se il primo carattere è 0 e il secondo carattere non è 'x' o 'X', la stringa viene interpretata come un numero intero ottale. In caso contrario, viene interpretata come numero decimale.If the first character is 0 and the second character is not 'x' or 'X', the string is interpreted as an octal integer; otherwise, it is interpreted as a decimal number. Se il primo carattere è '0' e il secondo carattere è 'x' o 'X', la stringa viene interpretata come integer esadecimale.If the first character is '0' and the second character is 'x' or 'X', the string is interpreted as a hexadecimal integer. Se il primo carattere è compreso tra '1' e '9', la stringa viene interpretata come integer decimale.If the first character is '1' through '9', the string is interpreted as a decimal integer. Alle lettere da 'a' a 'z' (o da 'A' a 'Z') vengono assegnati i valori da 10 a 35. Sono consentite solo le lettere con valori assegnati minori di base.The letters 'a' through 'z' (or 'A' through 'Z') are assigned the values 10 through 35; only letters whose assigned values are less than base are permitted. strtoul e _strtoui64 consentono l'uso di un prefisso con un segno di addizione (+) o sottrazione (-). Un segno di sottrazione iniziale indica che il valore restituito è negativo.strtoul and _strtoui64 allow a plus (+) or minus (-) sign prefix; a leading minus sign indicates that the return value is negated.

La configurazione dell'impostazione della categoria LC_NUMERIC delle impostazioni locali influisce sul valore di output. Per altre informazioni, vedere setlocale.The output value is affected by the setting of the LC_NUMERIC category setting of the locale; see setlocale for more information. Le versioni di queste funzioni senza il suffisso _l usano le impostazioni locali correnti per questo comportamento dipendente dalle impostazioni locali. Le versioni con il suffisso _l sono identiche, ma usano il parametro passato alle impostazioni locali.The versions of these functions without the _l suffix use the current locale for this locale-dependent behavior; the versions with the _l suffix are identical except that they use the locale parameter passed in instead.

Se il valore restituito da queste funzioni causa un overflow o underflow, o se la conversione non può essere eseguita, vengono restituiti valori case speciali come illustrato di seguito:When the value returned by these functions would cause an overflow or underflow, or when conversion is not possible, special case values are returned as shown:

FunzioneFunction CondizioneCondition Valore restituitoValue returned
strtod OverflowOverflow +/- HUGE_VAL
strtod Underflow o nessuna conversioneUnderflow or no conversion 00
strtol + Overflow+ Overflow LONG_MAXLONG_MAX
strtol - Overflow- Overflow LONG_MINLONG_MIN
strtol Underflow o nessuna conversioneUnderflow or no conversion 00
_strtoi64 + Overflow+ Overflow _I64_MAX_I64_MAX
_strtoi64 - Overflow- Overflow _I64_MIN_I64_MIN
_strtoi64 Nessuna conversioneNo conversion 00
_strtoui64 OverflowOverflow _UI64_MAX_UI64_MAX
_strtoui64 Nessuna conversioneNo conversion 00

_I64_MAX, I64_MIN e _UI64_MAX sono definiti in LIMITS.H._I64_MAX, I64_MIN, and _UI64_MAX are defined in LIMITS.H.

wcstod, wcstol, wcstoul, _wcstoi64 e _wcstoui64 sono versioni a caratteri wide rispettivamente di strtod, strtol, strtoul, _strtoi64 e _strtoui64. Il puntatore a un argomento di fine conversione per ognuna di queste funzioni di caratteri wide è una stringa di caratteri wide.wcstod, wcstol, wcstoul, _wcstoi64, and _wcstoui64 are wide-character versions of strtod, strtol, strtoul, _strtoi64, and _strtoui64, respectively; the pointer to an end-of-conversion argument to each of these wide-character functions is a wide-character string. In caso contrario, ognuna di queste funzioni di caratteri wide si comporta in modo identico alla controparte di caratteri a un byte.Otherwise, each of these wide-character functions behaves identically to its single-byte-character counterpart.

Vedere ancheSee Also

Conversione dei dati Data Conversion
Impostazioni locali Locale
Interpretazione di sequenze di caratteri multibyte Interpretation of Multibyte-Character Sequences
Floating-Point Support (Supporto delle funzioni a virgola mobile)Floating-Point Support
atof, _atof_l, _wtof, _wtof_latof, _atof_l, _wtof, _wtof_l