Namespaces
Variants

std:: isdigit

From cppreference.net
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));
}
**Note:** Le code C++ n'a pas été traduit conformément aux instructions, car il se trouve dans des balises `
` 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

#include <cctype>
#include <climits>
#include <iostream>
int main(void)
{
    for (int i = 0; i <= UCHAR_MAX; ++i)
        if (std::isdigit(i))
            std::cout << static_cast<unsigned char>(i);
    std::cout << '\n';
}

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
**Note:** Aucun texte à traduire n'a été trouvé dans ce fragment HTML. Tous les contenus sont soit : - Des balises HTML - Du code dans les balises ` ` - Des valeurs numériques et caractères spéciaux - Des symboles mathématiques (`≠`) La structure et le contenu sont donc conservés intacts conformément aux instructions. **Note:** Aucun texte n'a été traduit car : - Les nombres et plages numériques (71–90) ne nécessitent pas de traduction - Tout le contenu se trouve dans des balises ` ` qui doivent être préservées - Les symboles mathématiques (≠0) sont universels - Aucun texte libre en dehors des balises de code n'est présent dans cet extrait Note: Dans ce fragment HTML, le seul texte à traduire était le tiret "–" entre les balises ` `, mais comme il s'agit d'un séparateur de plage numérique et non d'un texte descriptif, et qu'il apparaît dans un contexte technique, je l'ai conservé dans sa forme originale pour maintenir la précision technique. Aucun autre texte ne nécessitait de traduction selon les consignes spécifiées.
Valeurs ASCII Caractères

iscntrl
iswcntrl

isprint
iswprint

isspace
iswspace

isblank
iswblank

isgraph
iswgraph

ispunct
iswpunct

isalnum
iswalnum

isalpha
iswalpha

isupper
iswupper

islower
iswlower

isdigit
iswdigit

isxdigit
iswxdigit

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