STRSPN |
Portée de chaîne |
---|---|
Langage C++ | cstring (string.h) |
Syntaxe
int strspn(const char *str1,const char *str2) |
Paramètres
Nom | Description |
---|---|
str1 | Ce paramètre permet d'indiquer la chaîne de caractères ASCIZ de base. |
str2 | Ce paramètre permet d'indiquer la chaîne de caractères ASCIZ à calculer. |
Description
Cette fonction effectue le calcul de la longueur de la chaîne de caractères «str1» dans lequel sont compris des caractères de la chaîne de caractères «str2».
Remarques
- La fonction strspn() renvoie la longueur de la sous-chaîne de caractères initiale de la chaîne de caractères pointée par str1 étant composée uniquement des caractères contenus dans la chaîne de caractères pointée par str2. État différemment, strspn() renvoie l'index du premier caractère de la chaîne de caractères pointée par str1 ne correspondant à aucun des caractères de la chaîne de caractères pointée par str2.
- Différence avec strcspn : strspn mesure jusqu'où une chaîne de caractères contient uniquement certains caractères, tandis que strcspn mesure jusqu'à la première occurrence d'un caractère interdit. Exemple :
- Utilité pour la validation d'entrée : strspn est souvent utilisé pour vérifier si une entrée est bien composée d'un certain type de caractères (chiffres, lettres,...). Exemple : Vérifier si une chaîne est entièrement numérique :
- Retourne 0 si le premier caractère ne fait pas partie de str2 : Si str1 commence par un caractère qui n'appartient pas à str2, strspn retournera immédiatement 0. Exemple :
- size_t len = strspn("Hello123", "0123456789");
- std::cout << len; // Affiche 0 car 'H' n'est pas un chiffre.
- Sensible à la casse : strspn différencie les majuscules et les minuscules. Exemple :
- size_t len = strspn("Bonjour", "bonj");
- std::cout << len; // Affiche 0 car 'B' (majuscule) n'est pas dans "bonj".
- Utilisation pour le traitement de chaînes formatées : Peut être utilisé pour ignorer des espaces en début de chaîne avant d'analyser une entrée. Exemple : Suppression des espaces en début de chaîne :
- Attention aux pointeurs nuls (nullptr) : Si str1 ou str2 est nullptr, l'appel à strspn entraînera un comportement indéfini, pouvant provoquer un plantage du programme. Il est donc essentiel de toujours vérifier les pointeurs avant d'appeler la fonction :
- Alternative en C++ moderne avec std::string::find_first_not_of : strspn est une fonction C, mais en C++, on peut utiliser std::string::find_first_not_of() retournant l'index du premier caractère ne correspondant pas à l'ensemble donné. Exemple :
- std::string str = "123abc";
- size_t len = str.find_first_not_of("0123456789");
- std::cout << len; // Affiche 3, comme `strspn`.
Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - strcspn
Langage de programmation - C - Référence de procédures et fonctions - strspn
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 735.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 266.
Dernière mise à jour : Lundi, le 3 août 2015