C ++ strtoull () - C ++ Standardbibliothek

Die Funktion strtoull () in C ++ interpretiert den Inhalt eines Strings als ganzzahlige Zahl der angegebenen Basis und gibt seinen Wert als vorzeichenloses long long int zurück.

Die Funktion strtoull () in C ++ interpretiert den Inhalt eines Strings als ganzzahlige Zahl der angegebenen Basis und gibt seinen Wert als vorzeichenloses 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 "41aac" Gültiger numerischer Teil -> 42 Erstes Zeichen nach gültigem numerischen Teil -> a

strtoull () Prototyp (Stand C ++ 11 Standard)

 unsigned long long int strtoull (const char * str, char ** end, int base);

Die Funktion strtoull () verwendet einen String, einen Zeiger auf ein Zeichen und einen ganzzahligen Wert - base als Parameter, interpretiert den Inhalt des Strings als eine ganzzahlige Zahl der angegebenen Basis und gibt einen vorzeichenlosen langen langen int-Wert zurück.

Diese Funktion ist in der Header-Datei definiert.

strtoull () Parameter

  • str: Eine Zeichenfolge 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.
  • base:Die Basis des Integralwertes. Die Menge der gültigen Werte für die Basis ist (0, 2, 3,…, 35, 36).

strtoull () Rückgabewert

Die Funktion strtoull () gibt Folgendes zurück:

  • Ein vorzeichenloser Long Long Int-Wert (der aus der Zeichenfolge konvertiert wird).
  • 0, wenn keine gültige Konvertierung durchgeführt werden konnte.

Beispiel 1: Wie funktioniert die Funktion strtoull ()?

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

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 String value = 231ax12 Long Long Int-Wert ohne Vorzeichen = 231 End String = ax12 String-Wert = 231 Long Long Int-Wert ohne Vorzeichen = 231 Nullzeiger

Ein gültiger ganzzahliger Wert für die Funktion strtoull () 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).

Wenn das Argument am Anfang ein Minuszeichen (-) enthält, wird die negative Zahl implizit in einen vorzeichenlosen Long Long Int-Typ konvertiert, bei dem es sich um eine positive Zahl handelt.

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: strtoull () -Funktion mit verschiedenen Basen

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

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 148ax bis Unsigned Long Long Int mit base-5 = 9 End String = 8ax 148ax bis Unsigned Long Long Int mit base-15 = 4405 End String = x 148ax bis Unsigned Long Long Int mit base-35 = 1682308 End String =

Die Funktion strtoull () ignoriert alle führenden Leerzeichen, bis das primäre Nicht-Leerzeichen gefunden wird.

Im Allgemeinen hat ein gültiges ganzzahliges Argument für die Funktion strtoull () 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: strtoull () -Funktion für führende Leerzeichen-, Minus- und ungültige Konvertierung

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

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 25axbz bis Unsigned Long Long Int mit base-11 = 307 End String = xbz -110bcd bis Unsigned Long Long Int mit base-2 = 18446744073709551610 End String = bcd ax110.97 bis Unsigned 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: strtoull () -Funktion mit Basis 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; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 017x bis Unsigned Long Long Int mit base-0 = 15 End String = x 0x1cg bis Unsigned Long Long Int mit base-0 = 28 End String = g 70sxz bis Unsigned Long Long Int mit base-0 = 70 End String = sxz

Interessante Beiträge...