std::stoul, std::stoull
| 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), selon le cas.
std::strtoul(str.c_str(), &ptr, base).std::wcstoul(str.c_str(), &ptr, base).std::strtoull(str.c_str(), &ptr, base).std::wcstoull(str.c_str(), &ptr, base).Ignore tous les caractères blancs (tels qu'identifiés en appelant std::isspace) jusqu'à ce que le premier caractère non blanc soit trouvé, 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=) et les convertit en une valeur entière. La représentation valide d'un entier non signé se compose des parties suivantes :
base
- (optionnel) signe plus ou moins
- (optionnel) préfixe (
0) indiquant la base octale (s'applique uniquement lorsque la base est8ou0) - (optionnel) préfixe (
0xou0X) indiquant la base hexadécimale (s'applique uniquement lorsque la base est16ou0) - 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 les caractères alphabétiques, en commençant par Aa pour l'entier en base-11, jusqu'à Zz pour l'entier 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 actuellement installée.
Si la valeur de est base0, la base numérique est détectée automatiquement : 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 rendue négative comme par moins unaire dans le type de résultat, ce qui applique les règles de bouclage 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'index de ce caractère sera calculé et stocké dans *pos, donnant le nombre de caractères qui ont été traités par la conversion.
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
- std::invalid_argument si aucune conversion n'a pu être effectuée.
- std::out_of_range si la valeur convertie sortirait de la plage du type de résultat ou si la fonction sous-jacente ( std::strtoul ou std::strtoull ) définit errno à ERANGE .
Exemple
|
Cette section est incomplète
Raison : aucun 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) |