C ++ strtoll () - C ++ Standardbibliotek

Strtoll () -funktionen i C ++ tolkar innehållet i en sträng som ett integrerat nummer i den angivna basen och returnerar dess värde som en lång lång int.

Den här funktionen ställer också in en pekare för att peka på det första tecknet efter det sista giltiga tecknet i strängen om det finns någon, annars är pekaren inställd på null.

 För bas 10 och strängen "201xz $" Giltig numerisk del -> 201 Första tecknet efter giltig numerisk del -> x

strtoll () prototyp (Från och med C ++ 11 standard)

 lång lång int stroll (const char * str, char ** end, int base);

Strtoll () -funktionen tar sträng, en pekare till tecken och ett heltalvärde - bas som parameter, tolkar strängens innehåll som ett integrerat nummer i den givna basen och returnerar ett långt långt int-värde.

Denna funktion definieras i rubrikfilen.

strtoll () Parametrar

  • str: En sträng som representerar ett integrerat tal.
  • slut: Hänvisning till ett redan tilldelat objekt av typen char *. Värdet på slutet ställs in av funktionen till nästa tecken i str efter det sista giltiga tecknet. Denna parameter kan också vara en nollpekare, i vilket fall den inte används.
  • bas: Basen för det integrerade värdet. Uppsättningen av giltiga värden för bas är (0, 2, 3,…, 35, 36).

strtoll () Returvärde

Funktionen strtoll () returnerar:

  • ett långt långt int-värde (som konverteras från strängen).
  • 0 om ingen giltig konvertering kunde utföras.

Exempel 1: Hur fungerar strtoll () -funktionen?

 #include #include #include using namespace std; int main() ( int base = 10; char numberString() = "13.5ab_1x"; char *end; long long int number; number = strtoll(numberString, &end, base); cout << "String value = " << numberString << endl; cout << "Long long int value = " << number << endl; cout << "End String = " << end << endl; strcpy(numberString, "13"); cout << "String value = " << numberString << endl; number = strtoll(numberString, &end, base); cout << "Long long int value = " << number << endl; if (*end) ( cout << end; ) else ( cout << "Null pointer"; ) return 0; )

När du kör programmet blir resultatet:

 Strängvärde = 13.5ab_1x Långt långt intvärde = 13 Slutsträng = .5ab_1x Strängvärde = 13 Långt långt intvärde = 13 Nollpekare

Ett giltigt heltal för strtoll () -funktionen består av:

  • Ett valfritt + eller - tecken.
  • Ett prefix 0 för oktal bas (gäller endast när bas = 8 eller 0).
  • Ett prefix 0x eller 0X för hexadecimal bas (gäller endast när bas = 16 eller 0).
  • En sekvens av siffror och / eller alfabet (om basen är större än 10).

De giltiga värdena för parameterbas är (0, 2, 3,…, 35, 36). En uppsättning giltiga siffror för bas 2 är (0, 1), för bas 3 är (0, 1, 2) och så vidare.

För baser som börjar från 11 till 36 inkluderar giltiga siffror alfabet. Uppsättningen med giltiga siffror för bas 11 är (0, 1,…, 9, A, a), för bas 12 är (0, 1,…, 9, A, a, B, b) och så vidare.

Exempel 2: strtoll () -funktion med olika baser

 #include #include using namespace std; int main() ( char *end; cout << "23ajz" << " to Long Long Int with base-7 = " << strtoll("23ajz", &end, 7) << endl; cout << "End String = " << end << endl << endl; cout << "23ajz" << " to Long Long Int with base-20 = " << strtoll("23ajz", &end, 20) << endl; cout << "End String = " << end << endl << endl; cout << "23ajz" << " to Long Long Int with base-36 = " << strtoll("23ajz", &end, 36) << endl; cout << "End String = " << end << endl << endl; return 0; )

När du kör programmet blir resultatet:

 23ajz till Long Long Int med base-7 = 17 End Sträng = ajz 23ajz till Long Long Int med base-20 = 17419 End Sträng = z 23ajz till Long Long Int med base-36 = 3512879 End Sträng =

Strtoll () -funktionen ignorerar alla ledande blankstegstecken tills det primära karaktären som inte är blanksteg hittas.

I allmänhet har ett giltigt heltalargument för strtoll () -funktionen följande form:

 (blanksteg) (- | +) (0 | 0x) (alfanumeriska tecken)

Sedan, med utgångspunkt från denna karaktär, tar det så många tecken som möjligt som bildar en giltig helhetsrepresentation och omvandlar dem till ett långt långt intvärde. Oavsett vad som är kvar av strängen efter att den sista giltiga karaktären ignoreras och har ingen inverkan på resultatet.

Exempel 3: funktion strtoll () för ledande blanksteg och ogiltig konvertering

 #include #include using namespace std; int main() ( char *end; cout << " 25axbz" << " to Long Long Int with base-11 = " << strtoll(" 25axbz", &end, 11) << endl; cout << "End String = " << end << endl << endl; cout << " 110bcd" << " to Long Long Int with base-2 = " << strtoll(" 110bcd", &end, 2) << endl; cout << "End String = " << end << endl << endl; cout << "ax110.97" << " to Long Long Int with base-10 = " << strtoll("ax110.97", &end, 10) << endl; cout << "End String = " << end << endl << endl; return 0; )

När du kör programmet blir resultatet:

 25axbz till Long Long Int med bas-11 = 307 Endsträng = xbz 110bcd till Long Long Int med bas-2 = 6 Endsträng = bcd ax110.97 till Long Long Int med bas-10 = 0 Endsträng = ax110.97

Om basen är 0 bestäms den numeriska basen automatiskt genom att titta på strängens format. Om prefixet är 0 är basen oktal (8). Om prefixet är 0x eller 0X är basen hexadecimal (16), annars är basen decimal (10).

Exempel 4: strtoll () -funktion med bas 0

 #include #include using namespace std; int main() ( char *end; /* octal base */ cout << "025x" << " to Long Long Int with base-0 = " << strtoll("025x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* hexadecimal base */ cout << "0xf1x" << " to Long Long Int with base-0 = " << strtoll("0xf1x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* decimal base */ cout << "15ab" << " to Long Long Int with base-0 = " << strtoll("15ab", &end, 0) << endl; cout << "End String = " << end << endl << endl; return 0; )

När du kör programmet blir resultatet:

 025x till lång lång int med bas-0 = 21 ändsträng = x 0xf1x till lång lång int med bas-0 = 241 slutsträng = x 15ab till lång lång int med bas-0 = 15 slutsträng = ab

Intressanta artiklar...