ISDIGIT |
Est-ce un chiffre ? |
---|---|
Langage C++ | cctype (ctype.h) |
Syntaxe
int isdigit(int caractere) |
Paramètres
Nom | Description |
---|---|
caractere | Ce paramètre permet d'indiquer le caractère à vérifier |
Description
Cette fonction indique si le caractère est un nombre.
Remarques
- La fonction isdigit() renvoie une valeur différent de zéro si caractere est un chiffre, c'est-à-dire de 0 à 9. Sinon, zéro est renvoyé.
- Définition et utilité : La fonction isdigit est définie dans l'entête <cctype> et permet de vérifier si un caractère donné est un chiffre décimal, c'est-à-dire l'un des caractères '0' à '9'. Cette fonction est utile dans des programmes où il est nécessaire de valider les entrées utilisateur ou de traiter des chaînes de caractères contenant des chiffres.
- Comportement avec les caractères ASCII : isdigit fonctionne spécifiquement avec les chiffres ASCII (caractères de 48 à 57). Elle retourne vrai pour les caractères '0' à '9' et faux pour tous les autres caractères, y compris les lettres, symboles et espaces. Par exemple, isdigit('5') retourne vrai, tandis que isdigit('a') retourne faux.
- Validation de saisie : Un cas d'utilisation courant de isdigit est la validation d'entrées utilisateur, comme vérifier si une chaîne ou un caractère saisi est un chiffre avant de l'utiliser dans des calculs. Par exemple, dans une application de conversion de devises, on peut tester si un caractère est un chiffre avant de l'inclure dans la conversion :
- Manipulation de chaînes de caractères : isdigit est couramment utilisée dans le traitement de chaînes de caractères pour extraire ou valider des chiffres. Par exemple, pour extraire tous les chiffres d'une chaîne, on peut utiliser isdigit dans une boucle :
- Comportement avec les caractères de contrôle : Comme la fonction isdigit ne reconnaît que les chiffres ASCII ('0' à '9'), elle renverra également 0 pour les caractères de contrôle (comme les sauts de ligne ou les tabulations). Cela signifie que des caractères comme '\n' ou '\t' ne sont pas considérés comme des chiffres, même si certains systèmes pourraient les afficher de manière similaire à des chiffres dans certains contextes de traitement.
- Prise en charge des locales : Contrairement à certaines fonctions comme isalpha ou islower, isdigit ne dépend généralement pas des locales dans le cadre des chiffres numériques. Les caractères '0' à '9' sont standards et ne varient pas en fonction de la configuration régionale. Cela simplifie l'utilisation de cette fonction pour la validation des chiffres dans des systèmes multi-lingues.
- Comparaison avec d'autres fonctions de classification : isdigit fait partie d'un groupe de fonctions de classification de caractères en C++ incluant isalpha (pour les lettres), isspace (pour les espaces), et isalnum (pour les lettres et les chiffres). Ces fonctions peuvent être utilisées ensemble pour valider des entrées plus complexes. Par exemple, pour vérifier si une chaîne contient uniquement des chiffres, on peut combiner isdigit avec une boucle pour chaque caractère.
- Utilisation dans le traitement de chaînes : isdigit est souvent utilisée dans les algorithmes traitant des chaînes de caractères pour extraire ou valider les chiffres présents. Par exemple, un programme peut analyser une chaîne de caractères et extraire uniquement les chiffres pour effectuer des calculs ou des analyses. Exemple :
- Comportement avec les valeurs non valides : L'argument de isdigit doit être un entier représentant un caractère ASCII valide ou EOF. Passer une valeur en dehors de cette plage (par exemple, un entier négatif ou un caractère non défini) peut entraîner un comportement indéfini, particulièrement si la valeur n'est pas représentée par un caractère visible. Il est donc essentiel de s'assurer que l'entrée correspond bien à un caractère valide.
- Utilisation dans des programmes de validation de nombres : isdigit est souvent utilisée dans des programmes validant des entrées numériques. Par exemple, lors de la saisie d'un nombre par l'utilisateur, on peut vérifier que tous les caractères sont des chiffres avant de les convertir en un entier :
- #include <iostream>
- #include <cctype>
- #include <string>
- bool isNumber(const std::string& str) {
- for (char c : str) {
- if (!isdigit(c)) {
- return false; // Contient un caractère non numérique
- }
- }
- return true; // Tous les caractères sont des chiffres
- }
- int main() {
- std::string input = "12345";
- if (isNumber(input))
- std::cout << input << " est un nombre valide.\n";
- else
- std::cout << input << " n'est pas un nombre valide.\n";
- return 0;
- }
- Performance et simplicité : La fonction isdigit est très rapide et très simple à utiliser. Comme elle n'effectue qu'une comparaison avec les caractères numériques standards (de '0' à '9'), son exécution est optimisée pour des performances élevées, ce qui en fait un excellent choix pour les validations fréquentes dans des applications à grande échelle.
Ce programme extraira et affichera les chiffres "1 2 3 4 5".
Cela afficherait "1 est un chiffre", "2 est un chiffre", et "3 est un chiffre".
Ce programme valide que la chaîne contient uniquement des chiffres.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :

- #include <iostream>
- #include <cctype>
- #include <cstring>
-
- int isPhoneNumberCanadian(const char * phoneNumber) {
- int I;
- for(I = 0; I < strlen(phoneNumber); I++) {
- if(!(isdigit(phoneNumber[I]) || phoneNumber[I] == '-')) {
- return 0;
- }
- }
- return 1;
- }
-
- int main()
- {
- std::cout << "XXX-555-6666 = " << isPhoneNumberCanadian("XXX-555-6666") << std::endl;
- std::cout << "444-555-6666 = " << isPhoneNumberCanadian("444-555-6666") << std::endl;
- std::cout << "4445556666 = " << isPhoneNumberCanadian("4445556666") << std::endl;
- return 0;
- }
on obtiendra le résultat suivant :
XXX-555-6666 = 0444-555-6666 = 1
4445556666 = 1
Voir également
Langage de programmation - C - Référence de procédures et fonctions - isdigit
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 732.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 152.
Dernière mise à jour : Lundi, le 3 août 2015