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

La fonction wcstoul () 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 comme un entier long non signé.

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

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

La fonction wcstoul () 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 non signée.

Paramètres de wcstoul ()

  • 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).

wcstoul () Valeur de retour

La fonction wcstoul () renvoie:

  • une valeur int 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 wcstoul ()?

 #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 value; int base = 10; value = wcstoul(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoul(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned 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 long non signé = 101 Chaîne de fin = aa ᚶ Valeur de chaîne = 59 Valeur int longue non signée = 59 Chaîne de fin =

Une valeur entière valide pour la fonction wcstoul () 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 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 wcstoul () 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 Int with base-5 = " << wcstoul(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-12 = " << wcstoul(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-36 = " << wcstoul(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 Int avec base-5 = 81 End String = bzϾϿ 311bzϾϿ à Unsigned Long Int avec base-12 = 5351 End String = zϾϿ 311bzϾϿ à Unsigned Long Int avec base-36 = 5087231 End String = ϾϿ

La fonction wcstoul () 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 wcstoul () 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 wcstoul () 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 Int with base-5 = " << wcstoul(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Int with base-12 = " << wcstoul(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 en Int long non signé avec base-5 = 10 Chaîne de fin = 5Ϣx xƜz201 en Int long non signé avec base-12 = 0 Chaîne de fin = 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 wcstoul () 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 Int with base-0 = " << wcstoul(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Int with base-0 = " << wcstoul(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Int with base-0 = " << wcstoul(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

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

Articles intéressants...