C ++ strtoull () - C ++ standardbibliotek

Strtoull () -funksjonen i C ++ tolker innholdet i en streng som et integrert tall i den angitte basen og returnerer verdien som en usignert lang lang int.

Strtoull () -funksjonen i C ++ tolker innholdet i en streng som et integrert tall i den angitte basen og returnerer verdien som en usignert lang lang int.

Denne funksjonen setter også en peker for å peke på det første tegnet etter strengens siste gyldige tegn hvis det er noen, ellers er pekeren satt til null.

 For base 10 og strengen "41aac" Gyldig numerisk del -> 42 Første tegn etter gyldig numerisk del -> a

strtoull () prototype (Per C ++ 11 standard)

 usignert lang lang int strtoull (const char * str, char ** end, int base);

Strtoull () -funksjonen tar streng, en peker til tegn og en heltalsverdi - base som parameter, tolker strengens innhold som et integrert tall på den gitte basen og returnerer en usignert lang lang int-verdi.

Denne funksjonen er definert i topptekstfilen.

strtoull () Parametere

  • str: En streng med representasjonen av et integrert tall.
  • end:Henvisning til et allerede tildelt objekt av typen char *. Verdien på slutten settes av funksjonen til neste tegn i str etter det siste gyldige tegnet. Denne parameteren kan også være en nullpeker, i så fall brukes den ikke.
  • base:Grunnlaget for den integrerte verdien. Settet med gyldige verdier for basen er (0, 2, 3,…, 35, 36).

strtoull () Returverdi

Funksjonen strtoull () returnerer:

  • en usignert lang lang int-verdi (som konverteres fra strengen).
  • 0 hvis ingen gyldig konvertering kunne utføres.

Eksempel 1: Hvordan fungerer strtoull () -funksjonen?

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

Når du kjører programmet, vil utdataene være:

 Strengverdi = 231ax12 usignert lang lang int-verdi = 231 slutt streng = ax12 strengverdi = 231 usignert lang lang int-verdi = 231 null peker

En gyldig heltallverdi for strtoull () -funksjonen består av:

  • Et valgfritt + eller - tegn.
  • Et prefiks 0 for oktal base (gjelder bare når base = 8 eller 0).
  • Et prefiks 0x eller 0X for heksadesimal base (gjelder bare når base = 16 eller 0).
  • En sekvens med sifre og / eller alfabet (hvis basen er større enn 10).

Hvis argumentet inneholder et minustegn (-) i begynnelsen, konverteres det negative tallet implisitt til en usignert lang lang int-type som er et positivt tall.

De gyldige verdiene for parameterbase er (0, 2, 3,…, 35, 36). Et sett med gyldige sifre for base 2 er (0, 1), for base 3 er (0, 1, 2) og så videre. For baser fra 11 til 36 inkluderer gyldige sifre alfabet. Settet med gyldige sifre for base 11 er (0, 1,…, 9, A, a), for base 12 er (0, 1,…, 9, A, a, B, b) og så videre.

Eksempel 2: strtoull () -funksjon med forskjellige baser

 #include #include using namespace std; int main() ( char *end; cout << "148ax" << " to Unsigned Long Long Int with base-5 = " << strtoll("148ax", &end, 5) << endl; cout << "End String = " << end << endl << endl; cout << "148ax" << " to Unsigned Long Long Int with base-15 = " << strtoll("148ax", &end, 15) << endl; cout << "End String = " << end << endl << endl; cout << "148ax" << " to Unsigned Long Long Int with base-35 = " << strtoll("148ax", &end, 35) << endl; cout << "End String = " << end << endl << endl; return 0; )

Når du kjører programmet, vil utdataene være:

 148ax til Unsigned Long Long Int med base-5 = 9 End Streng = 8ax 148ax til Unsigned Long Long Int med base-15 = 4405 End Streng = x 148ax til Unsignert Long Long Int med base-35 = 1682308 End Streng =

Strtoull () -funksjonen ignorerer alle de ledende mellomromstegnene til det primære ikke-hvite mellomromstegnet er funnet.

Generelt har et gyldig heltallargument for strtoull () -funksjonen følgende form:

 (mellomrom) (- | +) (0 | 0x) (alfanumeriske tegn)

Fra dette tegnet tar det så mange tegn som mulig som danner en gyldig helhetsrepresentasjon og konverterer dem til en lang lang int-verdi. Uansett hva som er igjen av strengen etter at det siste gyldige tegnet blir ignorert og har ingen innvirkning på resultatet.

Eksempel 3: funksjonen strtoull () for ledende mellomrom, minus og ugyldig konvertering

 #include #include using namespace std; int main() ( char *end; cout << " 25axbz" << " to Unsigned Long Long Int with base-11 = " << strtoull(" 25axbz", &end, 11) << endl; cout << "End String = " << end << endl << endl; /* Negative value is converted to unsigned long long int type */ cout << " -110bcd" << " to Unsigned Long Long Int with base-2 = " << strtoull(" -110bcd", &end, 2) << endl; cout << "End String = " << end << endl << endl; cout << "ax110.97" << " to Unsigned Long Long Int with base-10 = " << strtoull("ax110.97", &end, 10) << endl; cout << "End String = " << end << endl << endl; return 0; )

Når du kjører programmet, vil utdataene være:

 25axbz til usignert Long Long Int med base-11 = 307 Endstreng = xbz -110bcd til usignert Long Long Int med base-2 = 18446744073709551610 Endstreng = bcd ax110.97 til usignert Long Long Int med base-10 = 0 Endstreng = ax110.97

Hvis basen er 0, bestemmes den numeriske basen automatisk ved å se på strengens format. Hvis prefikset er 0, er basen oktal (8). Hvis prefikset er 0x eller 0X, er basen heksadesimal (16), ellers er basen desimal (10).

Eksempel 4: strtoull () -funksjon med base 0

 #include #include using namespace std; int main() ( char *end; /* octal base */ cout << "017x" << " to Unsigned Long Long Int with base-0 = " << strtoull("017x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* hexadecimal base */ cout << "0x1cg" << " to Unsigned Long Long Int with base-0 = " << strtoull("0x1cg", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* decimal base */ cout << "70sxz" << " to Unsigned Long Long Int with base-0 = " << strtoull("70sxz", &end, 0) << endl; cout << "End String = " << end << endl << endl; return 0; )

Når du kjører programmet, vil utdataene være:

 017x til usignert lang lang int med base-0 = 15 endestreng = x 0x1cg til usignert lang lang int med base-0 = 28 sluttstreng = g 70sxz til usignert lang lang int med base-0 = 70 sluttstreng = sxz

Interessante artikler...