C ++ strtoull () - C ++ standardraamatukogu

Funktsioon strtoull () tõlgendab C ++ keeles stringi sisu määratud baasi lahutamatu arvuna ja tagastab selle väärtuse allkirjastamata pika pika int-na.

Funktsioon strtoull () tõlgendab C ++ keeles stringi sisu määratud baasi lahutamatu arvuna ja tagastab selle väärtuse allkirjastamata pika pika int-na.

See funktsioon paneb ka kursori näitama stringi viimase kehtiva märgi järel oleva esimese märgi poole, kui see on olemas, vastasel juhul on kursor null.

 Aluse 10 ja stringi "41aac" jaoks Kehtib arvuline osa -> 42 Esimene märk pärast kehtivat arvulist osa -> a

strtoull () prototüüp (standardi C ++ 11 järgi)

 allkirjastamata pikk pikk int strtoull (const char * str, char ** end, int alus);

Funktsioon strtoull () võtab parameetriks stringi, kursori tähemärgi ja täisarvu base - baasi, tõlgendab stringi sisu antud baasi terviknumbrina ja tagastab allkirjastamata pika pika int-väärtuse.

See funktsioon on määratletud päisefailis.

strtoull () parameetrid

  • str: String, millel on integraalarv.
  • end:Viide juba eraldatud objektile, mille tüüp on char *. Lõppväärtuse määrab funktsioon järgmisele märgile stringides pärast viimast kehtivat tähemärki. See parameeter võib olla ka nullkursor, sel juhul seda ei kasutata.
  • base:Integraalväärtuse alus. Baasi kehtivate väärtuste komplekt on (0, 2, 3,…, 35, 36).

strtoull () Tagastusväärtus

Funktsioon strtoull () tagastab:

  • allkirjastamata pikk pikk int väärtus (mis teisendatakse stringist).
  • 0, kui kehtivat teisendamist ei õnnestunud teha.

Näide 1: Kuidas funktsioon strtoull () töötab?

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

Programmi käivitamisel on väljund järgmine:

 Stringi väärtus = 231ax12 Allkirjastamata Pika pika int-väärtus = 231 Lõpus String = ax12 Stringi väärtus = 231 Allkirjastamata Pika pika int-väärtus = 231 Nullkursor

Funktsiooni strtoull () kehtiv täisarv sisaldab järgmist:

  • Valikuline märk + või -.
  • Oktaalaluse eesliide 0 (kehtib ainult siis, kui alus = 8 või 0).
  • Kuueteistkümnendkohalise baasi eesliide 0x või 0X (kehtib ainult siis, kui alus = 16 või 0).
  • Numbrite ja / või tähestike jada (kui alus on suurem kui 10).

Kui argument sisaldab alguses miinusmärki (-), teisendatakse negatiivne arv kaudselt allkirjastamata pika pika int tüübiks, mis on positiivne arv.

Parameetri baasi kehtivad väärtused on (0, 2, 3,…, 35, 36). Baasi 2 kehtivate numbrite komplekt on (0, 1), baasi 3 puhul on (0, 1, 2) ja nii edasi. Aluste 11–36 alustel sisaldavad kehtivad numbrid tähestikke. Baasi 11 kehtivate numbrite komplekt on (0, 1,…, 9, A, a), baasi 12 jaoks on (0, 1,…, 9, A, a, B, b) ja nii edasi.

Näide 2: funktsioon strtoull () erinevate alustega

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

Programmi käivitamisel on väljund järgmine:

 148ax kuni allkirjastamata pika keskmise int-5-ga = 9 lõpp-stringiga = 8ax 148ax-i allkirjastamata pikk-pikk-keskmine-alus-15-ga = 8axax

Funktsioon strtoull () ignoreerib kõiki juhtivaid tühimärke, kuni leitakse esmane mitte-tühimärk.

Üldiselt on funktsiooni strtoull () kehtiv täisarvu argument järgmisel kujul:

 (tühik) (- | +) (0 | 0x) (tähtnumbrilised tähemärgid)

Siis, alustades sellest märgist, kulub võimalikult palju märke, mis moodustavad kehtiva täisarvu kujutise ja teisendavad need pikaks pikaks int-väärtuseks. Kõik, mis jääb stringist järele pärast viimase kehtiva märgi eiramist, ei mõjuta tulemust.

Näide 3: funktsioon strtoull () tühimärgi juhtimiseks, miinus ja kehtetu teisendamine

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

Programmi käivitamisel on väljund järgmine:

 25axbz kuni allkirjastamata pika keskmise int-11-ga = 307 lõpustring = xbz -110bcd kuni allkirjastamata pika pika keskmise-alus-2-ga = 18446744073709551610 lõpustring = bcd ax110.97 kuni allkirjastamata pika keskmise int-alus-10 = 0 lõnga = ax110.97

Kui alus on 0, määratakse numbriline alus stringi vormingut vaadates automaatselt. Kui eesliide on 0, on alus kaheksand (8). Kui eesliide on 0x või 0X, on alus kuueteistkümnendsüsteem (16), vastasel juhul on alus kümnendkoht (10).

Näide 4: funktsioon strtoull () alusega 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; )

Programmi käivitamisel on väljund järgmine:

 017x kuni allkirjastamata pika keskmise int-0-ga = 15 lõppstringiga = x 0x1cg kuni allkirjastamata pika pikk-int-alus-0-ga = 0 lõpp-stringiga = 28 lõpp-stringiga = g 70sxz kuni allkirjastamata pika pikk-keskmise int-0-ni = 70 lõpp-stringiga = sxz

Huvitavad Artiklid...