STRCSPN |
SPN de chaine |
---|---|
Langage C++ | cstring (string.h) |
Syntaxe
char *strcspn(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 de recherche. |
Description
Cette fonction effectue la recherche de la sous-chaîne «str1» ne contenant aucun des caractères contenu dans «str2».
Remarques
- La fonction strcspn() 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 non contenus dans la chaîne de caractères pointée par str2. État différemment, la fonction strcspn() renvoie l'index du premier caractère de la chaîne de caractères pointée par str1 correspondant à l'un des caractères de la chaîne de caractères pointée par str2.
- Utilisation typique pour rechercher des délimiteurs : strcspn est souvent utilisée pour trouver la première occurrence de caractères spécifiques comme des espaces, des chiffres ou des symboles. Exemple :
- Renvoie strlen(str1) si aucun caractère de str2 n'est trouvé : Si str1 ne contient aucun des caractères présents dans str2, strcspn retourne la longueur totale de str1. Exemple :
- Ne modifie pas les chaînes de caractères passées en paramètre : Contrairement à certaines autres fonctions de manipulation de chaînes de caractères (strtok par exemple), strcspn ne modifie pas str1 ou str2. Cela permet une utilisation sécurisée sans risque d'écrasement de données.
- Peut être utilisée pour extraire un sous-ensemble d'une chaîne de caractères : strcspn permet d'extraire la partie initiale d'une chaîne de caractères jusqu'à un certain caractère. Exemple :
- Alternative plus moderne avec std::string::find_first_of : En C++, on peut obtenir le même résultat avec std::string::find_first_of, étant plus lisible et plus sûr. Exemple équivalent :
- std::string str = "Bonjour, monde!";
- size_t pos = str.find_first_of(",!");
- std::cout << "Première ponctuation à la position : " << pos << std::endl;
- Efficacité et complexité : strcspn parcourt str1 caractère par caractère et vérifie si chacun existe dans str2, ce qui lui donne une complexité de O(n * m), avec n = strlen(str1) et m = strlen(str2). Pour de grandes chaînes, une solution plus rapide serait d'utiliser un tableau de hachage pour pré-marquer les caractères de str2, réduisant ainsi la complexité à O(n).
Ici, strcspn trouve la première virgule à l'index 7.
Ici, str1 ne contient aucun chiffre, donc la fonction renvoie 10.
Ici, la fonction extrait "C++" en trouvant le premier espace ou point d'exclamation.
Cette approche évite d'utiliser des chaînes de caractères char* et gère mieux la mémoire.
Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - strchr
Langage de programmation - C++ - Référence de procédures et fonctions - strrchr
Langage de programmation - C - Référence de procédures et fonctions - strcspn
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 734.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 255.