A strtoll () függvény a C ++ - ban egy karakterlánc tartalmát a megadott bázis integrálszámaként értelmezi, és értékét 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 "201xz $" karakterlánchoz Érvényes numerikus rész -> 201 Az első karakter az érvényes numerikus rész után -> x
strtoll () prototípus (C ++ 11 szabvány szerint)
hosszú hosszú int strtoll (const char * str, char ** end, int alap);
Az strtoll () függvény a karakterláncot, a mutatót a karakterhez és az egész érték alapot veszi paraméterül, a karakterlánc tartalmát az adott bázis integrálszámaként értelmezi, és hosszú hosszú int értéket ad vissza.
Ezt a függvényt a fejlécfájl határozza meg.
strtoll () Paraméterek
- str: Karakterlánc, amely integrálszámot képvisel.
- vége: Hivatkozás egy már lefoglalt char * típusú 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.
- alap: Az integrálérték alapja. Az alap érvényes értékeinek halmaza (0, 2, 3,…, 35, 36).
strtoll () Visszatérési érték
Az strtoll () függvény visszatér:
- 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 strtoll () függvény?
#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; )
A program futtatásakor a kimenet a következő lesz:
Karakterlánc értéke = 13,5ab_1x hosszú hosszú int érték = 13 vége karakterlánc =, 5ab_1x karakterlánc értéke = 13 hosszú hosszú int érték = 13 null mutató
Az strtoll () 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).
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: strtoll () függvény különböző bázisokkal
#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; )
A program futtatásakor a kimenet a következő lesz:
23ajz-tól hosszú hosszú int-ig alap-7 = 17 végső húr = ajz 23ajz-ig-hosszú hosszú int-ig alap-20-ig = 17419 vég-húr = z 23ajz-ig hosszú hosszú int-ig alap-7 = 171219 végű karakterlánc = 3512879
Az strtoll () 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 strtoll () 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: strtoll () függvény a szóköz és az érvénytelen konverzió vezetéséhez
#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; )
A program futtatásakor a kimenet a következő lesz:
25axbz-tól Long Long Int -ig alap-11 = 307 End String = xbz 110bcd-tól Long Long Int-ig base-2-vel = 6 End String = bcd ax110.97-ig Long Long Int-ig base-10 = 0 End-string = 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: strtoll () függvény 0 bázissal
#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; )
A program futtatásakor a kimenet a következő lesz:
025x - hosszú hosszú int. Alap-0 = 21 végső karakterlánc = x 0xf1x - hosszú hosszú int. Alap-0 = 241 végső karakterlánc = x 15ab - hosszú hosszú int. Alap-0 = 15 végső karakterlánc = ab