Condividi tramite


strtol, wcstol, _strtol_l_wcstol_l

Convertire le stringhe in un long valore intero.

Sintassi

long strtol(
   const char *string,
   char **end_ptr,
   int base
);
long wcstol(
   const wchar_t *string,
   wchar_t **end_ptr,
   int base
);
long _strtol_l(
   const char *string,
   char **end_ptr,
   int base,
   _locale_t locale
);
long _wcstol_l(
   const wchar_t *string,
   wchar_t **end_ptr,
   int base,
   _locale_t locale
);

Parametri

string
Stringa con terminazione Null da convertire.

end_ptr
Parametro di output, impostato per puntare al carattere dopo l'ultimo carattere interpretato. Ignorato, se NULL.

base
Base numerica da usare.

locale
Impostazioni locali da usare.

Valore restituito

strtol_strtol_l, wcstol, e _wcstol_l restituiscono il valore rappresentato in string. Restituiscono 0 se non è possibile eseguire alcuna conversione. Quando la rappresentazione provocherebbe un overflow, restituiscono LONG_MAX o LONG_MIN.

errno è impostato su ERANGE se si verifica l'overflow o l'underflow. È impostato su EINVAL se string è NULL. Oppure, se base è diverso da zero e minore di 2 o maggiore di 36. Per altre informazioni su ERANGE, EINVALe altri codici restituiti, vedere errno, _doserrno_sys_errlist, e _sys_nerr.

Osservazioni:

Le strtolfunzioni , _strtol_lwcstol, e _wcstol_l converteno string in un oggetto long. Interrompono la lettura string al primo carattere non riconosciuto come parte di un numero. Può trattarsi del carattere null di terminazione o del primo carattere alfanumerico maggiore o uguale a base.

wcstol e _wcstol_l sono versioni a caratteri wide di strtol e _strtol_l. Il relativo string argomento è una stringa di caratteri wide. Queste funzioni si comportano in modo identico a strtol e _strtol_l in caso contrario. L'impostazione della LC_NUMERIC categoria delle impostazioni locali determina il riconoscimento del carattere radix (marcatore frazionaria o separatore decimale) in string. Le funzioni strtol e wcstol usano le impostazioni locali correnti. _strtol_l e _wcstol_l usare invece le impostazioni locali passate. Per altre informazioni, vedere [setlocale] e Impostazioni locali.

Quando end_ptr è NULL, viene ignorato. In caso contrario, un puntatore al carattere che ha arrestato l'analisi viene archiviato nella posizione a end_ptrcui punta . Non è possibile eseguire alcuna conversione se non vengono trovate cifre valide o se viene specificata una base non valida. Il valore di string viene quindi archiviato nella posizione a end_ptrcui punta .

strtol prevede che string punti a una stringa nel formato seguente:

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

Parentesi quadre ([ ]) racchiudono gli elementi facoltativi. Parentesi graffe e barre verticali ({ | }) racchiudono alternative per un singolo elemento. whitespace può essere costituito da spazi e caratteri di tabulazione, che vengono ignorati. alphanumerics sono cifre decimali o lettere 'a' da 'z' a (o 'A' a 'Z'). Il primo carattere che non rientra in questo modulo interrompe l'analisi. Se base è compreso tra 2 e 36, viene usato come base del numero. Se base è 0, i caratteri iniziali della stringa a cui string punta vengono utilizzati per determinare la base. Se il primo carattere è 0e il secondo carattere non 'x' è o 'X', la stringa viene interpretata come un numero intero ottale. Se il primo carattere è e il secondo carattere è '0' 'x' o 'X', la stringa viene interpretata come intero esadecimale. Se il primo carattere è '1' attraverso '9', la stringa viene interpretata come un numero intero decimale. Alle lettere 'a' da 'z' (o 'A' a 'Z') vengono assegnati i valori da 10 a 35. L'analisi consente solo lettere i cui valori sono minori di base. Il primo carattere non compreso nell'intervallo della base interrompe la lettura. Si supponga, ad esempio, di string iniziare con "01". Se base è 0, lo scanner presuppone che sia un numero intero ottale. Un '8' carattere o '9' arresta l'analisi.

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
_tcstol strtol strtol wcstol
_tcstol_l _strtol_l _strtol_l _wcstol_l

Requisiti

Ciclo Intestazione obbligatoria
strtol <stdlib.h>
wcstol <stdlib.h> oppure <wchar.h>
_strtol_l <stdlib.h>
_wcstol_l <stdlib.h> oppure <wchar.h>

Le _strtol_l funzioni e _wcstol_l sono specifiche di Microsoft, non fanno parte della libreria C standard. Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

Vedere l'esempio per strtod.

Vedi anche

Conversione dati
impostazioni locali
localeconv
setlocale, _wsetlocale
Funzioni string to numeric value (Da stringa a valore numerico)
strtod, _strtod_l, wcstod_wcstod_l
strtoll, _strtoll_l, wcstoll_wcstoll_l
strtoul, _strtoul_l, wcstoul_wcstoul_l
atof, _atof_l, _wtof_wtof_l