std:: wcstoimax, std:: wcstoumax
|
Défini dans l'en-tête
<cinttypes>
|
||
|
std::
intmax_t
wcstoimax
(
const
wchar_t
*
nptr,
wchar_t
**
endptr,
int
base
)
;
|
(depuis C++11) | |
|
std::
uintmax_t
wcstoumax
(
const
wchar_t
*
nptr,
wchar_t
**
endptr,
int
base
)
;
|
(depuis C++11) | |
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
std::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 (
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 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 de 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 dépassement se produit et INTMAX_MAX , INTMAX_MIN , UINTMAX_MAX , ou 0 est renvoyé, selon le cas. Si aucune conversion ne peut être effectuée, 0 est renvoyé.
Exemple
#include <cinttypes> #include <iostream> #include <string> int main() { std::wstring str = L"helloworld"; std::intmax_t val = std::wcstoimax(str.c_str(), nullptr, 36); std::wcout << str << " in base 36 is " << val << " in base 10\n"; wchar_t* nptr; val = std::wcstoimax(str.c_str(), &nptr, 30); if (nptr != &str[0] + str.size()) std::wcout << str << " in base 30 is invalid." << " The first invalid digit is " << *nptr << '\n'; }
Sortie :
helloworld in base 36 is 1767707668033969 in base 10 helloworld in base 30 is invalid. The first invalid digit is w
Voir aussi
|
(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 une valeur entière
(fonction) |
|
|
convertit une chaîne large en une valeur entière non signée
(fonction) |
|
|
Documentation C
pour
wcstoimax
,
wcstoumax
|
|