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

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

La fonction wcstoull () 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 large s'il y en a, sinon le pointeur est défini sur null.

 Pour la base 10 et la chaîne large L "29hi $" Partie numérique valide -> 29 Premier caractère après la partie numérique valide -> h

Il est défini dans le fichier d'en-tête.

prototype wcstoull ()

 non signé long wcstoull (const wchar_t * str, wchar_t ** str_end, int base);

La fonction wcstoull () prend une chaîne large str, un pointeur vers le caractère large str_end et une valeur entière - base comme paramètre.

Il interprète ensuite le contenu de la chaîne large comme un nombre entier non signé de la base donnée et renvoie une valeur int long long non signée.

Paramètres de wcstoull ()

  • str: Une chaîne large ayant la représentation d'un nombre entier non signé.
  • str_end: un pointeur vers un pointeur vers un caractère large. La valeur de str_end est définie par la fonction sur le caractère suivant de 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).

wcstoull () Valeur de retour

La fonction wcstoull () 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 wcstoull ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"101aau16b6"; wchar_t str2() = L"59"; wchar_t *end; unsigned long long value; int base = 10; value = wcstoull(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoull(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Valeur de chaîne = 101aa ᚶ Valeur int longue longue non signée = 101 Chaîne de fin = aa ᚶ Valeur de chaîne = 59 Valeur int longue longue non signée = 59 Chaîne de fin =

Une valeur entière valide pour la fonction wcstoull () 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 wcstoull () avec différentes bases

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wchar_t str() = L"311bzu03feu03ff"; wcout << str << L" to Unsigned Long Long Int with base-5 = " << wcstoull(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-12 = " << wcstoull(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-36 = " << wcstoull(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

 311bzϾϿ à Unsigned Long Long Int avec base-5 = 81 End String = bzϾϿ 311bzϾϿ à Unsigned Long Long Int avec base-12 = 5351 End String = zϾϿ 311bzϾϿ à Unsigned Long Long Long Int avec base-36 = 5087231 End String = ϾϿ

La fonction wcstoull () 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 wcstoull () 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 int long non signée. 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 wcstoull () pour les espaces de début et la conversion invalide

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L" 205u03e2x to Unsigned Long Long Int with base-5 = " << wcstoull(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Long Int with base-12 = " << wcstoull(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

 205Ϣx à Unsigned Long Long Int avec base-5 = 10 End String = 5Ϣx xƜz201 à Unsigned Long Long Int avec base-12 = 0 End String = xƜz201

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 wcstoull () avec base 0

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L"0539u1e84 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Long Int with base-0 = " << wcstoull(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

 0539Ẅ vers Unsigned Long Long Int avec base-0 = 43 End String = 9Ẅ 0xa31 ע vers Unsigned Long Long Int avec base-0 = 2609 End String = ע 119x ؏ vers Unsigned Long Long Long Int avec base-0 = 119 End String = x ؏

Articles intéressants...