Namespaces
Variants

std:: stoul, std:: stoull

From cppreference.net
std::basic_string
Défini dans l'en-tête <string>
unsigned long stoul ( const std:: string & str,
std:: size_t * pos = nullptr, int base = 10 ) ;
(1) (depuis C++11)
unsigned long stoul ( const std:: wstring & str,
std:: size_t * pos = nullptr, int base = 10 ) ;
(2) (depuis C++11)
unsigned long long stoull ( const std:: string & str,
std:: size_t * pos = nullptr, int base = 10 ) ;
(3) (depuis C++11)
unsigned long long stoull ( const std:: wstring & str,
std:: size_t * pos = nullptr, int base = 10 ) ;
(4) (depuis C++11)

Interprète une valeur entière non signée dans la chaîne str .

Soit ptr un pointeur interne (aux fonctions de conversion) de type char * (1,3) ou wchar_t * (2,4) , en conséquence.

1) Appelle std:: strtoul ( str. c_str ( ) , & ptr, base ) .
2) Appelle std:: wcstoul ( str. c_str ( ) , & ptr, base ) .
3) Appelle std:: strtoull ( str. c_str ( ) , & ptr, base ) .
4) Appelle std:: wcstoull ( str. c_str ( ) , & ptr, base ) .

Ignore tous les caractères d'espacement (identifiés en appelant std::isspace ) jusqu'à ce que le premier caractère non-espace soit trouvé, puis prend autant de caractères que possible pour former une représentation valide de 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 d'enroulement des entiers non signés.

Si pos n'est pas un pointeur nul, alors ptr recevra l'adresse du premier caractère non converti dans str. c_str ( ) , et l'indice de ce caractère sera calculé et stocké dans * pos , donnant le nombre de caractères traités par la conversion.

Table des matières

Paramètres

str - la chaîne à convertir
pos - adresse d'un entier pour stocker le nombre de caractères traités
base - la base numérique

Valeur de retour

La chaîne convertie en type entier non signé spécifié.

Exceptions

Exemple

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 2009 C++11 std::out_of_range ne serait pas levé si
std::strtoul ou std::strtoull définit errno à ERANGE
sera levé

Voir aussi

(C++11) (C++11) (C++11)
convertit une chaîne en entier signé
(fonction)
(C++11) (C++11) (C++11)
convertit une chaîne en valeur à virgule flottante
(fonction)