C ++ strtoll () - C ++ standardraamatukogu

Funktsioon strtoll () tõlgendab C ++ keeles stringi sisu määratud baasi lahutamatu arvuna ja tagastab selle väärtuse 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 "201xz $" korral kehtiv arvuline osa -> 201 Esimene märk pärast kehtivat arvulist osa -> x

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

 pikk pikk int strtoll (const char * str, char ** ots, int alus);

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

See funktsioon on määratletud päisefailis.

strtoll () parameetrid

  • str: string, millel on integraalarv.
  • lõpp: viide juba omistatud 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.
  • alus: integraalväärtuse alus. Baasi kehtivate väärtuste komplekt on (0, 2, 3,…, 35, 36).

strtoll () Tagastusväärtus

Funktsioon strtoll () tagastab:

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

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

 #include #include #include using namespace std; int main() ( int base = 10; char numberString() = "13.5ab_1x"; char *end; long long int number; number = strtoll(numberString, &end, base); cout << "String value = " << numberString << endl; cout << "Long long int value = " << number << endl; cout << "End String = " << end << endl; strcpy(numberString, "13"); cout << "String value = " << numberString << endl; number = strtoll(numberString, &end, base); cout << "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 = 13.5ab_1x pikk pikk int väärtus = 13 lõpu string = .5ab_1x stringi väärtus = 13 pikk pikk int väärtus = 13 nullkursor

Funktsiooni strtoll () 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).

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 strtoll () erinevate alustega

 #include #include using namespace std; int main() ( char *end; cout << "23ajz" << " to Long Long Int with base-7 = " << strtoll("23ajz", &end, 7) << endl; cout << "End String = " << end << endl << endl; cout << "23ajz" << " to Long Long Int with base-20 = " << strtoll("23ajz", &end, 20) << endl; cout << "End String = " << end << endl << endl; cout << "23ajz" << " to Long Long Int with base-36 = " << strtoll("23ajz", &end, 36) << endl; cout << "End String = " << end << endl << endl; return 0; )

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

 23ajz kuni pika pika keskmise aluseni-7 = 17 lõnga string = ajz 23ajz kuni pika pika keskmise aluseni-20 = 17419 lõnga string = z 23 jaz kuni pika pika keskmise pikkuseni koos alusega-36 = 3512879 lõpp-string =

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

Üldiselt on funktsiooni strtoll () 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 strtoll () tühiku ja kehtetu teisendamise juhtimiseks

 #include #include using namespace std; int main() ( char *end; cout << " 25axbz" << " to Long Long Int with base-11 = " << strtoll(" 25axbz", &end, 11) << endl; cout << "End String = " << end << endl << endl; cout << " 110bcd" << " to Long Long Int with base-2 = " << strtoll(" 110bcd", &end, 2) << endl; cout << "End String = " << end << endl << endl; cout << "ax110.97" << " to Long Long Int with base-10 = " << strtoll("ax110.97", &end, 10) << endl; cout << "End String = " << end << endl << endl; return 0; )

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

 25axbz kuni pikk pikk int koos baas-11 = 307 End String = xbz 110 bcd kuni pikk pikk int koos base-2 = 6 otsa string = bcd ax110,97 kuni pikk pikk int koos base-10 = 0 otsa string = 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 strtoll () baasiga 0

 #include #include using namespace std; int main() ( char *end; /* octal base */ cout << "025x" << " to Long Long Int with base-0 = " << strtoll("025x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* hexadecimal base */ cout << "0xf1x" << " to Long Long Int with base-0 = " << strtoll("0xf1x", &end, 0) << endl; cout << "End String = " << end << endl << endl; /* decimal base */ cout << "15ab" << " to Long Long Int with base-0 = " << strtoll("15ab", &end, 0) << endl; cout << "End String = " << end << endl << endl; return 0; )

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

 025x kuni pikk pikk keskmine koos baas-0 = 21 lõpp-string = x 0xf1x kuni pikk pikk keskmine koos alus-0 = 241 lõpp-string = x 15ab kuni pikk-pikk keskmine baas-0 = 15 lõpp-string = ab

Huvitavad Artiklid...