Dela via


strtol, wcstol, , _strtol_l_wcstol_l

Konvertera strängar till ett long heltalsvärde.

Syntax

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
);

Parameterar

string
Null-avslutad sträng som ska konverteras.

end_ptr
En utdataparameter som ska peka på tecknet efter det senast tolkade tecknet. Ignorerad, om NULL.

base
Nummerbas som ska användas.

locale
Nationella inställningar som ska användas.

Returvärde

strtol, wcstol, _strtol_loch _wcstol_l returnerar värdet som representeras i string. De returnerar 0 om ingen konvertering är möjlig. När representationen skulle orsaka ett spill returnerar LONG_MAX de eller LONG_MIN.

errno är inställd på ERANGE om spill eller underflöde inträffar. Den är inställd på EINVAL om string är NULL. Eller om base är icke-zero och mindre än 2, eller större än 36. Mer information om ERANGE, EINVALoch andra returkoder finns i errno, _doserrno, _sys_errlistoch _sys_nerr.

Anmärkningar

Funktionerna strtol, wcstol, _strtol_loch _wcstol_l konverterar string till en long. De slutar läsa string vid det första tecknet som inte känns igen som en del av ett tal. Det kan vara tecknet terminating-null eller det första alfanumeriska tecknet som är större än eller lika med base.

wcstol och _wcstol_l är wide-character versioner av strtol och _strtol_l. Deras string argument är en sträng med många tecken. Dessa funktioner fungerar identiskt med strtol och _strtol_l på annat sätt. Språkvariantens LC_NUMERIC kategoriinställning avgör igenkänningen av radixtecknet (bråkmarkören eller decimaltecknet) i string. Funktionerna strtol och wcstol använd det aktuella språket. _strtol_l och _wcstol_l använd det språk som skickades i stället. Mer information finns i setlocale och Nationella inställningar.

När end_ptr är NULLignoreras den. Annars lagras en pekare till tecknet som stoppade genomsökningen på den plats som pekas på av end_ptr. Ingen konvertering är möjlig om inga giltiga siffror hittas eller om en ogiltig bas har angetts. Värdet för string lagras sedan på den plats som pekas på av end_ptr.

strtol förväntar sig string att peka på en sträng i följande formulär:

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

Hakparenteser ([ ]) omger valfria element. Klammerparenteser och en lodrät stapel ({ | }) omger alternativ för ett enda element. whitespace kan bestå av blanksteg och tabbtecken som ignoreras. alphanumerics är decimaltal eller bokstäverna 'a' genom 'z' (eller 'A' via 'Z'). Det första tecknet som inte passar det här formuläret stoppar genomsökningen. Om base är mellan 2 och 36 används det som bas för talet. Om base är 0används de inledande tecknen i strängen som pekas på av string för att fastställa basen. Om det första tecknet är 0, och det andra tecknet inte 'x' är eller 'X', tolkas strängen som ett oktalt heltal. Om det första tecknet är '0' och det andra tecknet är 'x' eller 'X'tolkas strängen som ett hexadecimalt heltal. Om det första tecknet är '1' genom '9'tolkas strängen som ett decimaltal. Bokstäverna 'a' genom 'z' (eller 'A' via 'Z') tilldelas värdena 10 till och med 35. Genomsökningen tillåter endast bokstäver vars värden är mindre än base. Det första tecknet utanför basintervallet stoppar genomsökningen. Anta till exempel att string börjar med "01". Om base är 0förutsätter skannern att det är ett oktalt heltal. Ett '8' eller-tecken '9' stoppar genomsökningen.

Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det här beteendet finns i Globalt tillstånd i CRT.

Allmän textrutinmappning

TCHAR. H-rutin _UNICODE och _MBCS inte definierat _MBCS definierad _UNICODE definierad
_tcstol strtol strtol wcstol
_tcstol_l _strtol_l _strtol_l _wcstol_l

Kravspecifikation

Rutin Obligatoriskt huvud
strtol <stdlib.h>
wcstol <stdlib.h> eller <wchar.h>
_strtol_l <stdlib.h>
_wcstol_l <stdlib.h> eller <wchar.h>

Funktionerna _strtol_l och _wcstol_l är Microsoft-specifika, inte en del av Standard C-biblioteket. Mer kompatibilitetsinformation finns i Kompatibilitet.

Exempel

Se exemplet för strtod.

Se även

Datakonvertering
regionala inställningar
localeconv
setlocale, _wsetlocale
Funktioner för sträng till numeriskt värde
strtod, _strtod_l, , wcstod_wcstod_l
strtoll, _strtoll_l, , wcstoll_wcstoll_l
strtoul, _strtoul_l, , wcstoul_wcstoul_l
atof, _atof_l, , _wtof_wtof_l