C ++ strtoull () - štandardná knižnica C ++

Funkcia strtoull () v C ++ interpretuje obsah reťazca ako celé číslo zadanej bázy a vráti jeho hodnotu ako nepodpísaný long long int.

Funkcia strtoull () v C ++ interpretuje obsah reťazca ako celé číslo zadanej bázy a vráti jeho hodnotu ako nepodpísaný long long int.

Táto funkcia tiež nastaví ukazovateľ tak, aby ukazoval na prvý znak za posledným platným znakom reťazca, ak existuje, inak je ukazovateľ nastavený na hodnotu null.

 Pre základňu 10 a reťazec „41aac“ Platná číselná časť -> 42 Prvý znak za platnou číselnou časťou -> a

strtoull () prototyp (od štandardu C ++ 11)

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

Funkcia strtoull () vezme ako svoj parameter reťazec, smerník na znak a celočíselnú hodnotu - základ, interpretuje obsah reťazca ako celé číslo danej základne a vráti nepodpísanú hodnotu long long int.

Táto funkcia je definovaná v hlavičkovom súbore.

strtoull () parametre

  • str: Reťazec, ktorý má celé číslo.
  • end:Odkaz na už pridelený objekt typu char *. Hodnota end je nastavená funkciou na nasledujúci znak v str za posledným platným znakom. Týmto parametrom môže byť tiež nulový ukazovateľ, v takom prípade sa nepoužije.
  • base:Základ celočíselnej hodnoty. Sada platných hodnôt pre základňu je (0, 2, 3,…, 35, 36).

strtoull () Vrátená hodnota

Funkcia strtoull () vráti:

  • nepodpísaná hodnota long long int (ktorá sa prevedie z reťazca).
  • 0, ak nie je možné vykonať platný prevod.

Príklad 1: Ako funguje funkcia 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; )

Po spustení programu bude výstup:

 Hodnota reťazca = 231ax12 Hodnota Unsigned Long long int = 231 Koniec reťazca = ax12 Hodnota reťazca = 231 Hodnota Unsigned Long long int = 231 Nulový ukazovateľ

Platná celočíselná hodnota pre funkciu strtoull () pozostáva z:

  • Voliteľný znak + alebo -.
  • Predpona 0 pre osmičkový základ (platí iba v prípade, že základňa = 8 alebo 0).
  • Predpona 0x alebo 0X pre hexadecimálny základ (platí iba v prípade, že základňa = 16 alebo 0).
  • Postupnosť číslic a / alebo abecedy (ak je základňa väčšia ako 10).

Ak argument obsahuje na začiatku znak mínus (-), záporné číslo sa implicitne prevedie na nepodpísaný typ long long int, čo je kladné číslo.

Platné hodnoty pre základ parametrov sú (0, 2, 3,…, 35, 36). Sada platných číslic pre základňu 2 je (0, 1), pre základňu 3 je (0, 1, 2) atď. Pre základy začínajúce od 11 do 36 zahŕňajú platné číslice abecedy. Sada platných číslic pre základňu 11 je (0, 1, …, 9, A, a), pre základňu 12 je (0, 1, …, 9, A, a, B, b) atď.

Príklad 2: funkcia strtoull () s rôznymi bázami

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

Po spustení programu bude výstup:

 148ax na nepodpísaný Long Long Int s base-5 = 9 koncový reťazec = 8ax 148ax na nepodpísaný Long Long Int s base-5 = 9 koncový reťazec = 8ax 148ax na nepodpísaný Long Long Int s base-5 = 16ax

Funkcia strtoull () ignoruje všetky vedúce medzery, kým sa nenájde primárny znak bez medzier.

Platný celočíselný argument pre funkciu strtoull () má vo všeobecnosti tento tvar:

 (medzery) (- | +) (0 | 0x) (alfanumerické znaky)

Potom, počnúc týmto znakom, trvá čo najviac znakov, ktoré vytvoria platné celočíselné zastúpenie a prevedú ich na dlhú dlhú hodnotu int. Čokoľvek, čo zostane z reťazca po poslednom platnom znaku, je ignorované a nemá to žiadny vplyv na výsledok.

Príklad 3: funkcia strtoull () na vedenie medzery, mínus a neplatnú konverziu

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

Po spustení programu bude výstup:

 25axbz na nepodpísaný Long Long Int so základňou-11 = 307 koncový reťazec = xbz -110bcd na nepodpísaný Long Long Int so základňou-2 = 18446744073709551610 koncový reťazec = bcd ax110.97 až nepodpísaný Long Long Int so základňou-10 = 0 koncový reťazec = ax110,97

Ak je báza 0, číselná báza sa určí automaticky pri pohľade na formát reťazca. Ak je predpona 0, základňa je osmičková (8). Ak je predpona 0x alebo 0X, základ je šestnástkový (16), inak je základ desatinný (10).

Príklad 4: funkcia strtoull () so základňou 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; )

Po spustení programu bude výstup:

 017x na nepodpísaný Long Long Int so základňou-0 = 15 koncový reťazec = x 0x1cg na nepodpísaný Long Long Int so základňou-0 = 28 koncový reťazec = g 70sxz na nepodpísaný Long Long Int so základňou-0 = 70 koncový reťazec = sxz

Zaujímavé články...