std:: isdigit
|
Défini dans l'en-tête
<cctype>
|
||
|
int
isdigit
(
int
ch
)
;
|
||
Vérifie si le caractère donné est l'un des 10 chiffres décimaux : (
0123456789
).
Le comportement n'est pas défini si la valeur de ch n'est pas représentable en tant que unsigned char et n'est pas égale à EOF .
Table des matières |
Paramètres
| ch | - | caractère à classifier |
Valeur de retour
Valeur non nulle si le caractère est un caractère numérique, zéro sinon.
Notes
isdigit
et
isxdigit
sont les seules fonctions standard de classification de caractères étroits qui ne sont pas affectées par les paramètres régionaux C actuellement installés. Bien que certaines implémentations (par exemple Microsoft dans la
page de codes 1252
) puissent classer des caractères à un octet supplémentaires comme des chiffres.
Comme toutes les autres fonctions de
<cctype>
, le comportement de
std::isdigit
est indéfini si la valeur de l'argument n'est ni représentable comme
unsigned
char
ni égale à
EOF
. Pour utiliser ces fonctions de manière sûre avec des
char
simples (ou des
signed
char
), l'argument doit d'abord être converti en
unsigned
char
:
bool my_isdigit(char ch) { return std::isdigit(static_cast<unsigned char>(ch)); }
` et contient des termes spécifiques au C++. Seul le texte environnant aurait été traduit s'il y en avait eu.
De même, ils ne doivent pas être utilisés directement avec des algorithmes standard lorsque le type de valeur de l'itérateur est char ou signed char . À la place, convertissez d'abord la valeur en unsigned char :
int count_digits(const std::string& s) { return std::count_if(s.begin(), s.end(), // static_cast<int(*)(int)>(std::isdigit) // incorrect // [](int c){ return std::isdigit(c); } // incorrect // [](char c){ return std::isdigit(c); } // incorrect [](unsigned char c){ return std::isdigit(c); } // correct ); }
Exemple
Sortie :
0123456789
Voir aussi
|
vérifie si un caractère est classé comme chiffre par une locale
(modèle de fonction) |
|
|
vérifie si un caractère large est un chiffre
(fonction) |
|
|
Documentation C
pour
isdigit
|
|
| Valeurs ASCII | Caractères |
isdigit
|
|||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| décimal | hexadécimal | octal | |||||||||||||
| 0–8 |
\x0
–
\x8
|
\0
–
\10
|
codes de contrôle (
NUL
, etc.)
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 9 |
\x9
|
\11
|
tabulation (
\t
)
|
≠0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 10–13 |
\xA
–
\xD
|
\12
–
\15
|
espaces blancs (
\n
,
\v
,
\f
,
\r
)
|
≠0
|
0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 14–31 |
\xE
–
\x1F
|
\16
–
\37
|
codes de contrôle |
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 32 |
\x20
|
\40
|
espace |
0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 33–47 |
\x21
–
\x2F
|
\41
–
\57
|
!"#$%&'()*+,-./
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 48–57 |
\x30
–
\x39
|
\60
–
\71
|
0123456789
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
0
|
0
|
0
|
≠0
|
≠0
|
| 58–64 |
\x3A
–
\x40
|
\72
–
\100
|
:;<=>?@
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 65–70 |
\x41
–
\x46
|
\101
–
\106
|
ABCDEF
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
≠0
|
| 71–90 |
\x47
–
\x5A
|
\107
–
\132
|
GHIJKLMNOP
QRSTUVWXYZ
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
0
|
| 91–96 |
\x5B
–
\x60
|
\133
–
\140
|
[\]^_`
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 97–102 |
\x61
–
\x66
|
\141
–
\146
|
abcdef
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
0
|
≠0
|
0
|
≠0
|
| 103–122 |
\x67
–
\x7A
|
\147
–
\172
|
ghijklmnop
qrstuvwxyz
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
0
|
≠0
|
0
|
0
|
| 123–126 |
\x7B
–
\x7E
|
\172
–
\176
|
{|}~
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 127 |
\x7F
|
\177
|
caractère d'effacement (
DEL
)
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|