C ++ strtoull () - Standardna knjižnica C ++

Funkcija strtoull () v jeziku C ++ razlaga vsebino niza kot celotno številko določene osnove in vrne njeno vrednost kot nepodpisan long long int.

Funkcija strtoull () v jeziku C ++ razlaga vsebino niza kot celotno številko določene osnove in vrne njeno vrednost kot nepodpisan long long int.

Ta funkcija nastavi tudi kazalec, ki kaže na prvi znak za zadnjim veljavnim znakom niza, če obstaja, sicer je kazalec nastavljen na nič.

 Za osnovo 10 in niz "41aac" Veljavni številski del -> 42 Prvi znak za veljavnim številskim delom -> a

prototip strtoull () (od standarda C ++ 11)

 nepodpisan long long int strtoull (const char * str, char ** end, int base);

Funkcija strtoull () za parameter vzame niz, kazalec na znak in celoštevilčno vrednost - osnova, interpretira vsebino niza kot celotno številko dane osnove in vrne nepodpisano dolgo dolgo int vrednost.

Ta funkcija je definirana v datoteki glave.

parametri strtoull ()

  • str: Niz, ki ima predstavitev integralnega števila.
  • end:Sklic na že dodeljeni objekt tipa char *. Vrednost end funkcija nastavi na naslednji znak v str za zadnjim veljavnim znakom. Ta parameter je lahko tudi ničelni kazalec, v tem primeru se ne uporablja.
  • base:Osnova integralne vrednosti. Nabor veljavnih vrednosti za osnovo je (0, 2, 3,…, 35, 36).

strtoull () Vrnjena vrednost

Funkcija strtoull () vrne:

  • nepodpisana dolga dolga int vrednost (ki se pretvori iz niza).
  • 0, če ni bilo mogoče izvesti nobene veljavne pretvorbe.

Primer 1: Kako deluje funkcija strtoull ()?

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

Ko zaženete program, bo rezultat:

 Vrednost niza = 231ax12 Nepodpisana dolga dolga int vrednost = 231 Končni niz = ax12 Vrednost niza = 231 Nepodpisana dolga dolga int vrednost = 231 Ničelni kazalec

Veljavna celoštevilčna vrednost funkcije strtoull () je sestavljena iz:

  • Izbirni znak + ali -.
  • Predpona 0 za osmiško osnovo (velja samo, če je osnova = 8 ali 0).
  • Predpona 0x ali 0X za šestnajstiško osnovo (velja samo, če je osnova = 16 ali 0).
  • Zaporedje števk in / ali abeced (če je osnova večja od 10).

Če argument na začetku vsebuje znak minus (-), se negativno število implicitno pretvori v nepodpisan long long int tip, ki je pozitivno število.

Veljavne vrednosti za osnovo parametrov so (0, 2, 3,…, 35, 36). Nabor veljavnih številk za osnovo 2 je (0, 1), za osnovo 3 je (0, 1, 2) in tako naprej. Pri osnovah od 11 do 36 veljavne številke vključujejo abecede. Nabor veljavnih števk za osnovo 11 je (0, 1,…, 9, A, a), za osnovo 12 je (0, 1,…, 9, A, a, B, b) itd.

Primer 2: funkcija strtoull () z različnimi osnovami

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

Ko zaženete program, bo rezultat:

 148ax do Nepodpisanega dolgega dolgega int z bazo-5 = 9 Končni niz = 8ax 148ax do Nepodpisanega dolgega dolgega int z bazo-35 = 1682308 Končni niz =

Funkcija strtoull () prezre vse vodilne presledke, dokler ne najde primarnega znaka, ki ni presledek.

Na splošno veljaven celoštevilčni argument za funkcijo strtoull () ima naslednjo obliko:

 (presledek) (- | +) (0 | 0x) (alfanumerični znaki)

Nato, začenši s tem znakom, vzame čim več znakov, ki tvori veljavno celoštevilsko predstavitev in jih pretvori v dolgo dolgo int vrednost. Karkoli je ostalo od niza po zadnjem veljavnem znaku, se prezre in ne vpliva na rezultat.

Primer 3: funkcija strtoull () za vodenje presledkov, minus in neveljavno pretvorbo

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

Ko zaženete program, bo rezultat:

 25axbz do Nepodpisani dolgi dolgi int z bazo-11 = 307 Končni niz = xbz -110bcd do Nepodpisani dolgi dolgi int z bazo-2 = 18446744073709551610 Končni niz = bcd ax110.97 do Nepodpisani dolgi dolgi int z bazo-10 = 0 Končni niz = sekira 110,97

Če je osnova 0, se številska osnova samodejno določi s pogledom na obliko niza. Če je predpona 0, je osnova osmična (8). Če je predpona 0x ali 0X, je osnova šestnajstiška (16), sicer pa je osnova decimalna (10).

Primer 4: funkcija strtoull () z osnovo 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; )

Ko zaženete program, bo rezultat:

 017x do Nepodpisanega dolgega dolgega int z bazo-0 = 15 Končni niz = x 0x1cg do Nepodpisanega dolgega dolgega int z bazo-0 = 28 Končni niz = g 70sxz do Nepodpisanega dolgega dolgega int z bazo-0 = 70 Končni niz = sxz

Zanimive Članki...