C ++ strtoull () - Bibliothèque standard C ++

La fonction strtoull () en C ++ interprète le contenu d'une chaîne comme un nombre entier de la base spécifiée et renvoie sa valeur sous la forme d'un long long int non signé.

La fonction strtoull () en C ++ interprète le contenu d'une chaîne comme un nombre entier de la base spécifiée et renvoie sa valeur sous la forme d'un long long int non signé.

Cette fonction définit également un pointeur pour qu'il pointe sur le premier caractère après le dernier caractère valide de la chaîne s'il y en a, sinon le pointeur est défini sur null.

 Pour la base 10 et la chaîne "41aac" Partie numérique valide -> 42 Premier caractère après la partie numérique valide -> a

prototype strtoull () (à partir de la norme C ++ 11)

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

La fonction strtoull () prend string, un pointeur vers un caractère et une valeur entière - base comme paramètre, interprète le contenu de string comme un nombre entier de la base donnée et renvoie une valeur int long long non signée.

Cette fonction est définie dans le fichier d'en-tête.

Paramètres de strtoull ()

  • str: Une chaîne ayant la représentation d'un nombre entier.
  • end:Référence à un objet déjà alloué de type char *. La valeur de fin est définie par la fonction sur le caractère suivant dans str après le dernier caractère valide. Ce paramètre peut également être un pointeur nul, auquel cas il n'est pas utilisé.
  • base:La base de la valeur intégrale. L'ensemble des valeurs valides pour la base est (0, 2, 3,…, 35, 36).

strtoull () Valeur de retour

La fonction strtoull () renvoie:

  • une valeur int long long non signée (qui est convertie à partir de la chaîne).
  • 0 si aucune conversion valide n'a pu être effectuée.

Exemple 1: Comment fonctionne la fonction 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; )

Lorsque vous exécutez le programme, la sortie sera:

 Valeur de chaîne = 231ax12 Non signé Long long int value = 231 End String = ax12 String value = 231 Unsigned Long long int value = 231 Pointeur nul

Une valeur entière valide pour la fonction strtoull () se compose de:

  • Un signe + ou - facultatif.
  • Un préfixe 0 pour la base octale (s'applique uniquement lorsque base = 8 ou 0).
  • Un préfixe 0x ou 0X pour base hexadécimale (s'applique uniquement lorsque base = 16 ou 0).
  • Une séquence de chiffres et / ou d'alphabets (si la base est supérieure à 10).

Si l'argument contient un signe moins (-) au début, le nombre négatif est implicitement converti en un type int long long non signé qui est un nombre positif.

Les valeurs valides pour la base de paramètres sont (0, 2, 3,…, 35, 36). Un ensemble de chiffres valides pour la base 2 est (0, 1), pour la base 3 est (0, 1, 2) et ainsi de suite. Pour les bases de 11 à 36, les chiffres valides incluent les alphabets. L'ensemble des chiffres valides pour la base 11 est (0, 1,…, 9, A, a), pour la base 12 est (0, 1,…, 9, A, a, B, b) et ainsi de suite.

Exemple 2: fonction strtoull () avec différentes bases

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

Lorsque vous exécutez le programme, la sortie sera:

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

La fonction strtoull () ignore tous les caractères blancs de tête jusqu'à ce que le caractère non-blanc principal soit trouvé.

En général, un argument entier valide pour la fonction strtoull () a la forme suivante:

 (espace) (- | +) (0 | 0x) (caractères alphanumériques)

Ensuite, à partir de ce caractère, il prend autant de caractères que possible qui forment une représentation entière valide et les convertit en une valeur longue longue int. Ce qui reste de la chaîne après le dernier caractère valide est ignoré et n'a aucun effet sur le résultat.

Exemple 3: fonction strtoull () pour les espaces de début, les moins et les conversions non valides

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

Lorsque vous exécutez le programme, la sortie sera:

 25axbz à Unsigned Long Long Int avec base-11 = 307 End String = xbz -110bcd à Unsigned Long Long Int avec base-2 = 18446744073709551610 End String = bcd ax110.97 à Unsigned Long Long Int avec base-10 = 0 End String = ax110.97

Si la base est 0, la base numérique est déterminée automatiquement en regardant le format de la chaîne. Si le préfixe est 0, la base est octale (8). Si le préfixe est 0x ou 0X, la base est hexadécimale (16), sinon la base est décimale (10).

Exemple 4: fonction strtoull () avec base 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; )

Lorsque vous exécutez le programme, la sortie sera:

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

Articles intéressants...