C ++ strtoull () - C ++ Standardbibliotek

Funktionen strtoull () i C ++ fortolker indholdet af en streng som et integralt tal i den angivne base og returnerer dens værdi som et usigneret langt langt int.

Funktionen strtoull () i C ++ fortolker indholdet af en streng som et integralt tal i den angivne base og returnerer dens værdi som et usigneret langt langt int.

Denne funktion indstiller også en markør til at pege på det første tegn efter strengens sidste gyldige tegn, hvis der er nogen, ellers er markøren indstillet til null.

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

strtoull () prototype (pr. C ++ 11 standard)

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

Strtoull () -funktionen tager streng, en markør til tegn og en heltalsværdi - base som parameter, fortolker strengens indhold som et integralt tal i den givne base og returnerer en usigneret lang lang int-værdi.

Denne funktion er defineret i headerfilen.

strtoull () Parametre

  • str: En streng med repræsentationen af ​​et integreret tal.
  • end:Henvisning til et allerede tildelt objekt af typen char *. Værdien af ​​slut indstilles af funktionen til det næste tegn i str efter det sidste gyldige tegn. Denne parameter kan også være en nul pointer, i hvilket tilfælde den ikke bruges.
  • base:Grundlaget for den integrerede værdi. Sættet med gyldige værdier for base er (0, 2, 3,…, 35, 36).

strtoull () Returværdi

Funktionen strtoull () returnerer:

  • en usigneret lang lang int-værdi (som konverteres fra strengen).
  • 0, hvis der ikke kunne udføres nogen gyldig konvertering.

Eksempel 1: Hvordan fungerer strtoull () -funktionen?

 #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 kører programmet, vil output være:

 Strengværdi = 231ax12 Usigneret Lang lang int-værdi = 231 Afslut Streng = ax12 Strengværdi = 231 Usigneret Lang lang int-værdi = 231 Nul pointer

En gyldig heltalværdi for strtoull () -funktionen består af:

  • Et valgfrit + eller - tegn.
  • Et præfiks 0 for oktal base (gælder kun når base = 8 eller 0).
  • Et præfiks 0x eller 0X for hexadecimal base (gælder kun når base = 16 eller 0).
  • En række af cifre og / eller alfabeter (hvis basen er større end 10).

Hvis argumentet indeholder et minus (-) i begyndelsen, konverteres det negative tal implicit til en usigneret lang lang int-type, som er et positivt tal.

De gyldige værdier for parameterbasen er (0, 2, 3,…, 35, 36). Et sæt gyldige cifre for base 2 er (0, 1), for base 3 er (0, 1, 2) og så videre. For baser, der starter fra 11 til 36, inkluderer gyldige cifre alfabeter. Sættet med gyldige cifre 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 () -funktion med forskellige 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 kører programmet, vil output være:

 148ax til usigneret lang lang int med base-5 = 9 ende streng = 8ax 148ax til usigneret lang lang int med base-15 = 4405 slutstreng = x 148ax til usigneret lang lang int med base-35 = 1682308 slutstreng =

Funktionen strtoull () ignorerer alle de førende tegn i mellemrum, indtil det primære tegn, der ikke er hvidt, findes.

Generelt har et gyldigt heltalargument for strtoull () -funktionen følgende form:

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

Derefter tager det så mange tegn som muligt fra denne karakter, der danner en gyldig heltalrepræsentation og konverterer dem til en lang lang int-værdi. Uanset hvad der er tilbage af strengen efter det sidste gyldige tegn ignoreres og har ingen indflydelse på resultatet.

Eksempel 3: strtoull () -funktion til førende mellemrum, 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 kører programmet, vil output være:

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

Hvis basen er 0, bestemmes den numeriske base automatisk ved at se på strengens format. Hvis præfikset er 0, er basen oktal (8). Hvis præfikset er 0x eller 0X, er basen hexadecimal (16), ellers er basen decimal (10).

Eksempel 4: strtoull () -funktion 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 kører programmet, vil output være:

 017x til usigneret lang lang int med base-0 = 15 slutstreng = x 0x1cg til usigneret lang lang int med base-0 = 28 slutstreng = g 70sxz til usigneret lang lang int med base-0 = 70 slutstreng = sxz

Interessante artikler...