C ++ strtoull () - C ++ Standard Library

A strtoull () függvény a C ++ - ban a karakterlánc tartalmát a megadott bázis integrálszámaként értelmezi, és értékét vissza nem írt hosszú hosszú int-ként adja vissza.

A strtoull () függvény a C ++ - ban a karakterlánc tartalmát a megadott bázis integrálszámaként értelmezi, és értékét vissza nem írt hosszú hosszú int-ként adja vissza.

Ez a függvény egy olyan mutatót is beállít, amely a karakterlánc utolsó érvényes karaktere után az első karakterre mutat, ha van ilyen, különben a mutató nullára van állítva.

 A 10. alaphoz és a "41aac" karakterlánchoz Érvényes numerikus rész -> 42 Első karakter az érvényes numerikus rész után -> a

strtoull () prototípus (C ++ 11 szabvány szerint)

 aláíratlan hosszú hosszú int strtoull (const char * str, char ** end, int alap);

Az strtoull () függvény paraméterként karakterláncot, egy karaktert mutatót és egy egész érték-alapot vesz fel, a karakterlánc tartalmát az adott bázis integrálszámaként értelmezi, és egy aláíratlan hosszú hosszú int értéket ad vissza.

Ezt a függvényt a fejlécfájl határozza meg.

strtoull () Paraméterek

  • str: Karakterlánc, amely integrális számot képvisel.
  • end:Hivatkozás egy char * típusú, már lefoglalt objektumra. A vég értékét a függvény a következő karakterre állítja be az utolsó érvényes karakter után. Ez a paraméter lehet egy null mutató is, ebben az esetben nem használják.
  • base:Az integrálérték alapja. Az alap érvényes értékeinek halmaza (0, 2, 3,…, 35, 36).

strtoull () Visszatérési érték

Az strtoull () függvény visszatér:

  • egy előjel nélküli hosszú hosszú int érték (amelyet a karakterláncból konvertálunk).
  • 0, ha nem lehet érvényes konverziót végrehajtani.

1. példa: Hogyan működik az strtoull () függvény?

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

A program futtatásakor a kimenet a következő lesz:

 Karakterlánc értéke = 231ax12 Előjel nélküli hosszú hosszú int érték = 231 Vég karakterlánc = ax12 Karakterlánc értéke = 231 Jel nélküli hosszú hosszú int érték = 231 Null mutató

A strtoull () függvény érvényes egész értéke a következőkből áll:

  • Opcionális + vagy - jel.
  • 0 előtag az oktális bázishoz (csak akkor érvényes, ha a bázis = 8 vagy 0).
  • 0x vagy 0X előtag hexadecimális bázisra (csak akkor alkalmazható, ha a bázis = 16 vagy 0).
  • Számjegyek és / vagy ábécék sorozata (ha az alap nagyobb, mint 10).

Ha az argumentum mínusz (-) előjelet tartalmaz az elején, a negatív számot implicit módon konvertáljuk előjel nélküli hosszú hosszú int típusúvá, amely pozitív szám.

A paraméteralap érvényes értékei: (0, 2, 3,…, 35, 36). A 2. bázis érvényes számjegyeinek halmaza (0, 1), a 3. bázis esetében (0, 1, 2) és így tovább. A 11 és 36 közötti bázisok esetében az érvényes számjegyek ábécét tartalmaznak. A 11 bázis érvényes számjegyeinek halmaza (0, 1,…, 9, A, a), a 12 bázis esetében (0, 1,…, 9, A, a, B, b) és így tovább.

2. példa: strtoull () függvény különböző bázisokkal

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

A program futtatásakor a kimenet a következő lesz:

 148ax-ig előjel nélküli hosszú hosszú int alap-5 = 9 végső karakterlánc = 8ax 148ax-ig előjel nélküli hosszú hosszú int alap-15 = 4405 vége karakterlánc = x 148ax-ig jel nélküli hosszú hosszú int alap-35 = 1682308 vég karakterlánc =

A strtoull () függvény mindaddig figyelmen kívül hagyja az összes vezető szóközt, amíg az elsődleges nem fehér szóköz megtalálható.

Általában az strtoull () függvény érvényes egész argumentuma a következő formában van:

 (szóköz) (- | +) (0 | 0x) (alfanumerikus karakterek)

Ezután, ebből a karakterből kiindulva, a lehető legtöbb karakterre van szükség, amely érvényes egész ábrázolást alkot, és hosszú hosszú int értékké alakítja őket. Bármi, ami az utolsó érvényes karakter után marad a karakterláncból, figyelmen kívül marad, és nincs hatása az eredményre.

3. példa: strtoull () függvény a szóköz, a mínusz és az érvénytelen konverzió vezetéséhez

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

A program futtatásakor a kimenet a következő lesz:

 25axbz - előjel nélküli hosszú hosszú int-alap-11 = 307 végső karakterlánc = xbz -110bcd-ig előjel nélküli hosszú hosszú int-alap-2 = 18446744073709551610 végső karakterlánc = bcd ax110.97-ig előjel nélküli hosszú hosszú int-alap-10 = 0 vég karakterlánc = ax110.97

Ha az alap 0, akkor a numerikus alapot automatikusan meghatározza a karakterlánc formátumának megnézésével. Ha az előtag 0, akkor az alapja oktális (8). Ha az előtag 0x vagy 0X, akkor az alap hexadecimális (16), különben az alap decimális (10).

4. példa: strtoull () függvény 0 bázissal

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

A program futtatásakor a kimenet a következő lesz:

 017x - előjel nélküli hosszú hosszú int alap-0 = 15 végső karakterlánc = x 0x1cg aláíratlan hosszú hosszú int alap-0 = 28 vég karakterlánc = g 70 másodperc

érdekes cikkek...