ISALNUM |
Est-ce un alphanumérique ? |
---|---|
Langage C++ | cctype (ctype.h) |
Syntaxe
int isalnum(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 alphanumérique (A à Z, a à z et 0 à 9).
Remarques
- La fonction isalnum() renvoie une valeur différente de 0 si son paramètre est soit une lettre de l'alphabet, soit un chiffre. Si le caractère n'est pas alphanumérique, zéro est renvoyé.
- Définition et utilisation : isalnum est une fonction standard déclarée dans <cctype>. Elle prend un entier (int), généralement un caractère de type char converti en unsigned char, et retourne une valeur non nulle si le caractère est alphanumérique (A à Z, a à z, 0 à 9), ou 0 sinon. Exemple d'utilisation :
- Dépendance au ensemble de caractères : isalnum fonctionne selon l'ensemble de caractères utilisé par la plateforme. Sur la plupart des systèmes modernes, il est compatible avec ASCII et les extensions comme l'ISO-8859-1. Cependant, pour des caractères non-ASCII (exemple : é, ñ), son comportement dépend de la localisation (locale), et il peut ne pas les reconnaître comme alphanumériques.
- Utilisation avec d'autres fonctions de <cctype>: isalnum fait partie d'un ensemble de fonctions de classification de caractères comme isalpha (lettre uniquement), isdigit (chiffre uniquement) et isspace (espace blanc). Pour vérifier spécifiquement une lettre sans inclure les chiffres, il vaut mieux utiliser isalpha.
- Gestion des signes et conversion : isalnum prend un int, mais il faut faire attention si le caractère est signé. Par exemple, en passant un char signé négatif (exemple : char c = -1 sur une plateforme où char est signé), isalnum(c) peut entraîner un comportement indéfini. Il est recommandé d'utiliser un cast vers unsigned char :
- if (isalnum(static_cast<unsigned char>(c))) { ... }
- Compatibilité avec les locales : Le comportement de isalnum dépend de la locale courante. Par défaut, il utilise la locale "C", ne reconnaissant que les caractères ASCII standards. Pour inclure des caractères spécifiques à d'autres langues, il faut définir une locale avec setlocale :
- #include <clocale>
- setlocale(LC_ALL, "fr_FR.utf8");
- Impact sur les performances : isalnum est souvent optimisée en interne, notamment en utilisant des tables de recherche (lookup tables), rendant son exécution très rapide. Elle est bien plus efficace qu'une vérification manuelle avec if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9')).
- Utilisation avec les chaînes de caractères : isalnum peut être utilisée pour filtrer une chaîne et supprimer les caractères non alphanumériques. Exemple :
- #include <iostream>
- #include <cctype>
- #include <string>
- std::string removeNonAlnum(const std::string& str) {
- std::string result;
- for (char c : str) {
- if (isalnum(c)) {
- result += c;
- }
- }
- return result;
- }
- int main() {
- std::string text = "Bonjour le monde! 123";
- std::cout << "Filtré : " << removeNonAlnum(text) << std::endl;
- return 0;
- }
- Alternative en C++ moderne avec std::isalnum : Depuis C++11, std::isalnum est disponible dans <locale>, permettant
d'utiliser des locales spécifiques sans modifier l'environnement global :
Cette approche est plus adaptée aux applications manipulant plusieurs langues.
Cela évite des erreurs avec des caractères étendus.
Mais cela ne garantit pas que isalnum gérera correctement tous les caractères accentués.
Cela affichera "Bonjour123", en supprimant les espaces et la ponctuation.
Exemple
Voici un exemple permettant d'afficher les caractères alphanumériques (1) ou non (0) entre l'intervalle 32 et 127 :

on obtiendra le résultat suivant :
= 0, ! = 0, " = 0, # = 0, $ = 0, % = 0, & = 0, ' = 0, ( = 0, ) = 0, * = 0, + =0, , = 0, - = 0, . = 0, / = 0, 0 = 1, 1 = 1, 2 = 1, 3 = 1, 4 = 1, 5 = 1, 6 = 1,
7 = 1, 8 = 1, 9 = 1, : = 0, ; = 0, < = 0, = = 0, > = 0, ? = 0, @ = 0, A = 1, B
= 1, C = 1, D = 1, E = 1, F = 1, G = 1, H = 1, I = 1, J = 1, K = 1, L = 1, M = 1
, N = 1, O = 1, P = 1, Q = 1, R = 1, S = 1, T = 1, U = 1, V = 1, W = 1, X = 1, Y
= 1, Z = 1, [ = 0, \ = 0, ] = 0, ^ = 0, _ = 0, ` = 0, a = 1, b = 1, c = 1, d =
1, e = 1, f = 1, g = 1, h = 1, i = 1, j = 1, k = 1, l = 1, m = 1, n = 1, o = 1,
p = 1, q = 1, r = 1, s = 1, t = 1, u = 1, v = 1, w = 1, x = 1, y = 1, z = 1, { =
0, | = 0, } = 0, ~ = 0, ¦ = 0,
Voir également
Langage de programmation - C - Référence de procédures et fonctions - isalnum
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 150.