Namespaces
Variants

wcstoimax, wcstoumax

From cppreference.net
< c ‎ | string ‎ | wide
Défini dans l'en-tête <inttypes.h>
intmax_t wcstoimax ( const wchar_t * restrict nptr,
wchar_t ** restrict endptr, int base ) ;
(depuis C99)
uintmax_t wcstoumax ( const wchar_t * restrict nptr,
wchar_t ** restrict endptr, int base ) ;
(depuis C99)

Interprète une valeur entière non signée dans la chaîne large pointée par nptr .

Ignore tous les caractères d'espacement (identifiés en appelant iswspace ) jusqu'au premier caractère non-espace, puis prend autant de caractères que possible pour former une représentation valide d'un nombre entier non signé en base-n (où n= base ) et les convertit en une valeur entière. La valeur entière non signée valide se compose des parties suivantes :

  • (optionnel) signe plus ou moins
  • (optionnel) préfixe ( 0 ) indiquant la base octale (s'applique uniquement lorsque la base est 8 ou 0 )
  • (optionnel) préfixe ( 0x ou 0X ) indiquant la base hexadécimale (s'applique uniquement lorsque la base est 16 ou 0 )
  • une séquence de chiffres

L'ensemble des valeurs valides pour la base est {0, 2, 3, ..., 36} . L'ensemble des chiffres valides pour les entiers en base 2 est {0, 1} , pour les entiers en base 3 est {0, 1, 2} , et ainsi de suite. Pour les bases supérieures à 10 , les chiffres valides incluent des caractères alphabétiques, commençant par Aa pour les entiers en base 11 , jusqu'à Zz pour les entiers en base 36 . La casse des caractères est ignorée.

Des formats numériques supplémentaires peuvent être acceptés par la locale C locale actuellement installée.

Si la valeur de base est 0 , la base numérique est auto-détectée : si le préfixe est 0 , la base est octale, si le préfixe est 0x ou 0X , la base est hexadécimale, sinon la base est décimale.

Si le signe moins faisait partie de la séquence d'entrée, la valeur numérique calculée à partir de la séquence de chiffres est niée comme par unary minus dans le type de résultat, ce qui applique les règles de bouclage des entiers non signés.

La fonction définit le pointeur pointé par endptr pour pointer vers le caractère large après le dernier caractère interprété. Si endptr est un pointeur nul, il est ignoré.

Table des matières

Paramètres

nptr - pointeur vers la chaîne large terminée par un caractère nul à interpréter
endptr - pointeur vers un pointeur d'un caractère large.
base - base de la valeur entière interprétée

Valeur de retour

Valeur entière correspondant au contenu de str en cas de succès. Si la valeur convertie dépasse la plage du type de retour correspondant, une erreur de plage se produit et INTMAX_MAX , INTMAX_MIN , UINTMAX_MAX , ou 0 est retourné, selon le cas. Si aucune conversion ne peut être effectuée, 0 est retourné.

Exemple

#include <errno.h>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#include <wchar.h>
int main(void)
{
  wchar_t* endptr;
  wprintf(L"%ld\n", wcstoimax(L" -123junk", &endptr, 10)); /* base 10                    */
  wprintf(L"%ld\n", wcstoimax(L"11111111", &endptr, 2));   /* base 2                     */
  wprintf(L"%ld\n", wcstoimax(L"XyZ", &endptr, 36));       /* base 36                    */
  wprintf(L"%ld\n", wcstoimax(L"010", &endptr, 0));        /* octal auto-detection       */
  wprintf(L"%ld\n", wcstoimax(L"10", &endptr, 0));         /* decimal auto-detection     */
  wprintf(L"%ld\n", wcstoimax(L"0x10", &endptr, 0));       /* hexadecimal auto-detection */
  /* range error             */
  /* LONG_MAX+1 --> LONG_MAX */
  errno = 0;
  wprintf(L"%ld\n", wcstoimax(L"9223372036854775808", &endptr, 10));
  wprintf(L"%s\n", strerror(errno));
}

Sortie :

-123
255
44027
8
10
16
9223372036854775807
Numerical result out of range

Références

  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.8.2.4 Les fonctions wcstoimax et wcstoumax (p: 220)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.8.2.4 Les fonctions wcstoimax et wcstoumax (p: 201)

Voir aussi

convertit une chaîne d'octets en intmax_t ou uintmax_t
(fonction)
(C95) (C99)
convertit une chaîne large en une valeur entière
(fonction)
(C95) (C99)
convertit une chaîne large en une valeur entière non signée
(fonction)
Documentation C++ pour wcstoimax , wcstoumax