Die Funktion strtoll () in C ++ interpretiert den Inhalt eines Strings als ganzzahlige Zahl der angegebenen Basis und gibt seinen Wert als long long int zurück.
Diese Funktion setzt auch einen Zeiger, der auf das erste Zeichen nach dem letzten gültigen Zeichen der Zeichenfolge zeigt, falls vorhanden, andernfalls wird der Zeiger auf null gesetzt.
Für Basis 10 und die Zeichenfolge "201xz $" Gültiger numerischer Teil -> 201 Erstes Zeichen nach gültigem numerischen Teil -> x
Prototyp strtoll () (Stand C ++ 11)
long long int strtoll (const char * str, char ** end, int base);
Die Funktion strtoll () verwendet einen String, einen Zeiger auf ein Zeichen und einen ganzzahligen Wert - base als Parameter, interpretiert den Inhalt des Strings als ganzzahlige Zahl der angegebenen Basis und gibt einen langen langen int-Wert zurück.
Diese Funktion ist in der Header-Datei definiert.
strtoll () Parameter
- str: Ein String mit der Darstellung einer ganzzahligen Zahl.
- end: Verweis auf ein bereits zugewiesenes Objekt vom Typ char *. Der Wert von end wird von der Funktion auf das nächste Zeichen in str nach dem letzten gültigen Zeichen gesetzt. Dieser Parameter kann auch ein Nullzeiger sein. In diesem Fall wird er nicht verwendet.
- Basis: Die Basis des Integralwerts. Die Menge der gültigen Werte für die Basis ist (0, 2, 3,…, 35, 36).
strtoll () Rückgabewert
Die Funktion strtoll () gibt Folgendes zurück:
- Ein langer langer int-Wert (der aus der Zeichenfolge konvertiert wird).
- 0, wenn keine gültige Konvertierung durchgeführt werden konnte.
Beispiel 1: Wie funktioniert die Funktion strtoll ()?
#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; )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
String value = 13.5ab_1x Long long int value = 13 End String = .5ab_1x String value = 13 Long long int value = 13 Nullzeiger
Ein gültiger ganzzahliger Wert für die Funktion strtoll () besteht aus:
- Ein optionales + oder - Zeichen.
- Ein Präfix 0 für die Oktalbasis (gilt nur, wenn die Basis = 8 oder 0 ist).
- Ein Präfix 0x oder 0X für die hexadezimale Basis (gilt nur, wenn die Basis = 16 oder 0 ist).
- Eine Folge von Ziffern und / oder Alphabeten (wenn die Basis größer als 10 ist).
Die gültigen Werte für die Parameterbasis sind (0, 2, 3,…, 35, 36). Ein Satz gültiger Ziffern für Basis 2 ist (0, 1), für Basis 3 ist (0, 1, 2) und so weiter.
Für Basen von 11 bis 36 enthalten gültige Ziffern Alphabete. Der Satz gültiger Ziffern für Basis 11 ist (0, 1,…, 9, A, a), für Basis 12 ist (0, 1,…, 9, A, a, B, b) und so weiter.
Beispiel 2: strtoll () -Funktion mit verschiedenen Basen
#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; )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
23ajz bis Long Long Int mit base-7 = 17 End String = ajz 23ajz bis Long Long Int mit base-20 = 17419 End String = z 23ajz bis Long Long Int mit base-36 = 3512879 End String =
Die Funktion strtoll () ignoriert alle führenden Leerzeichen, bis das primäre Nicht-Leerzeichen gefunden wird.
Im Allgemeinen hat ein gültiges Ganzzahlargument für die Funktion strtoll () die folgende Form:
(Leerzeichen) (- | +) (0 | 0x) (alphanumerische Zeichen)
Ausgehend von diesem Zeichen werden dann so viele Zeichen wie möglich benötigt, um eine gültige Ganzzahldarstellung zu bilden und diese in einen langen langen int-Wert zu konvertieren. Was nach dem letzten gültigen Zeichen von der Zeichenfolge übrig bleibt, wird ignoriert und hat keine Auswirkung auf das Ergebnis.
Beispiel 3: strtoll () -Funktion für führende Leerzeichen und ungültige Konvertierung
#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; )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
25axbz bis Long Long Int mit base-11 = 307 End String = xbz 110bcd bis Long Long Int mit base-2 = 6 End String = bcd ax110.97 bis Long Long Int mit base-10 = 0 End String = ax110.97
Wenn die Basis 0 ist, wird die numerische Basis automatisch anhand des Formats der Zeichenfolge ermittelt. Wenn das Präfix 0 ist, ist die Basis oktal (8). Wenn das Präfix 0x oder 0X ist, ist die Basis hexadezimal (16), andernfalls ist die Basis dezimal (10).
Beispiel 4: strtoll () -Funktion mit Basis 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; )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
025x bis Long Long Int mit Base-0 = 21 End String = x 0xf1x bis Long Long Int mit Base-0 = 241 End String = x 15ab bis Long Long Int mit Base-0 = 15 End String = ab