std:: strtoul, std:: strtoull
| 
           
           Défini dans l'en-tête
            
         
            
             <cstdlib>
            
           
           | 
         ||
| 
           
           
            
             unsigned
            
            
             long
            
            strtoul
            
             (
            
            
             const
            
            
             char
            
            
             *
            
            str,
            
             char
            
            
             **
            
            str_end,
            
             int
            
            base
            
             )
            
            
             ;
            
           
           
          | 
         (1) | |
| 
           
           
            
             unsigned
            
            
             long
            
            
             long
            
            strtoull
            
             (
            
            
             const
            
            
             char
            
            
             *
            
            str,
            
             char
            
            
             **
            
            str_end,
            
             int
            
            base
            
             )
            
            
             ;
            
           
           
          | 
         (2) | (depuis C++11) | 
Interprète une valeur entière non signée dans la chaîne d'octets pointée par str .
       Ignore tous les caractères d'espacement (identifiés en appelant
       
        
         std::isspace
        
       
       ) 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 (
        
0xou0X) 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 d'enroulement des entiers non signés.
Les fonctions définissent le pointeur pointé par str_end pour pointer vers le caractère suivant le dernier caractère interprété. Si str_end est un pointeur nul, il est ignoré.
         Table des matières | 
       
Paramètres
| str | - | pointeur vers la chaîne d'octets terminée par un caractère nul à interpréter | 
| str_end | - | pointeur vers un pointeur de caractère, pouvant être positionné après le dernier caractère interprété | 
| 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 (
       
        
         errno
        
       
       est défini à
       
        ERANGE
       
       ) et
       
        
         ULONG_MAX
        
       
       ou
       
        
         ULLONG_MAX
        
       
       est retourné. Si aucune conversion ne peut être effectuée,
       
        
         
         
          0
         
         
        
       
       est retourné.
      
Exemple
#include <cstdlib> #include <errno.h> #include <iostream> #include <string> int main() { const char* p = "10 200000000000000000000000000000 30 -40 - 42"; char* end = nullptr; std::cout << "Parsing '" << p << "':\n"; for (unsigned long i = std::strtoul(p, &end, 10); p != end; i = std::strtoul(p, &end, 10)) { std::cout << "'" << std::string(p, end - p) << "' -> "; p = end; if (errno == ERANGE) { errno = 0; std::cout << "range error, got "; } std::cout << i << '\n'; } std::cout << "After the loop p points to '" << p << "'\n"; }
Sortie possible :
Parsing '10 200000000000000000000000000000 30 -40 - 42': '10' -> 10 ' 200000000000000000000000000000' -> range error, got 18446744073709551615 ' 30' -> 30 ' -40' -> 18446744073709551576 After the loop p points to ' - 42'
Voir aussi
| 
          
           
            
             
              (C++11)
             
            
            
             
              (C++11)
             
            
           
           
          | 
        
         convertit une chaîne en entier non signé
          (fonction)  | 
       
| 
          
           
            
            
            
             
              (C++11)
             
            
           
           
          | 
        
         convertit une chaîne d'octets en valeur entière
          (fonction)  | 
       
| 
          
           
            
             
              (C++11)
             
            
            
             
              (C++11)
             
            
           
           
          | 
        
         convertit une chaîne d'octets en
         
          
           std::intmax_t
          
         
         ou
         
          
           std::uintmax_t
          
         
          (fonction)  | 
       
| 
         convertit une chaîne large en valeur entière non signée
          (fonction)  | 
       |
| 
         convertit une chaîne d'octets en valeur à virgule flottante
          (fonction)  | 
       |
| 
          
           
            
             
              (C++17)
             
            
           
           
          | 
        
         convertit une séquence de caractères en valeur entière ou à virgule flottante
          (fonction)  | 
       
| 
          
           
            
            
            
            
            
             
              (C++11)
             
            
           
           
          | 
        
         convertit une chaîne d'octets en valeur entière
          (fonction)  | 
       
| 
          
          
           
            Documentation C
           
          
          pour
          
           
            strtoul
           
           ,
           
            strtoull
           
          
          
         | 
       |