Maison > Article > développement back-end > Implémenter la fonction strtok() en C++
La fonction
strtok() est l'une des fonctions les plus couramment utilisées en C++. En utilisant des délimiteurs comme guide, cette fonction peut diviser le texte en morceaux ou jetons plus petits. Travailler avec des chaînes en C++ est facile grâce à la fonction strtok(). Cet article expliquera en détail la fonction strtok(), y compris sa définition, sa syntaxe, son algorithme et diverses stratégies d'implémentation. Il faut garder à l’esprit que la fonction strtok présente certaines limites et inconvénients potentiels. Par exemple, il ne peut pas être utilisé avec des chaînes const ou en lecture seule car il modifie directement la chaîne d'origine. Les cas extrêmes et les entrées inattendues, telles que les chaînes vides ou les délimiteurs récurrents dans une séquence, peuvent également être difficiles à gérer.
Malgré ces défauts, cette fonction reste un outil utile pour de nombreux programmeurs et est souvent utilisée dans une grande variété d'applications, notamment le traitement de texte, l'analyse de données et les protocoles réseau. Il s'agit d'une fonction flexible et puissante qui peut simplifier considérablement de nombreuses tâches de programmation courantes.
Pour diviser une chaîne en morceaux ou jetons plus petits en fonction d'un délimiteur, utilisez la fonction strtok() en C++. Un pointeur vers la chaîne qui doit être tokenisée et une chaîne avec les caractères délimiteurs sont les deux entrées de la fonction A. Le pointeur vers le tout premier jeton de la chaîne est renvoyé par la fonction. Tant qu'il reste des jetons dans la chaîne, les appels successifs à la fonction avec le même paramètre de chaîne renverront des jetons supplémentaires et cela se produit à l'aide du pointeur NULL dans la boucle while. . Lorsque vous appelez à nouveau la fonction 'strtok()', fournir NULL comme premier argument indique à la fonction de reprendre là où elle s'était arrêtée avec la tokenisation précédente de la même chaîne.
Lorsque la fonction 'strtok()' est appelée pour la première fois avec la chaîne d'entrée comme premier argument, elle commence à rechercher le premier jeton de la chaîne au début. Lorsqu'elle localise le jeton initial, elle le termine en remplaçant le délimiteur qui le définit. vient après avec le caractère nul ("0"). Lorsque 'strtok()' est à nouveau utilisé avec un pointeur NULL comme premier argument, la fonction reprend là où elle s'était arrêtée avec la tokenisation précédente de la chaîne, c'est-à-dire c'est-à-dire directement après le jeton précédent. Il continue de rechercher la prochaine apparition du délimiteur
.Char* strtok(char* str, const char* delimiters);
- `str` est un pointeur vers la chaîne à tokeniser
.- `delimiters` est une chaîne contenant des caractères délimiteurs.
Étape 1 - La fonction `strtok()` prend deux arguments - le premier argument est la chaîne d'entrée à tokeniser et le deuxième argument est une chaîne contenant tous les délimiteurs qui doivent être utilisés pour diviser la chaîne d'entrée en jetons
Étape 2 - Lorsque la fonction est appelée pour la première fois, la chaîne d'entrée est passée comme premier argument et la chaîne de délimiteur est passée comme deuxième argument
Étape 3 - Cette fonction recherche dans la chaîne d'entrée la première occurrence d'un caractère délimiteur
Étape 4 - Lorsqu'il trouve un caractère délimiteur, il le remplace par un terminateur nul (`'
- La prochaine fois que la fonction est appelée, le premier paramètre doit être défini sur « NULL » au lieu de la chaîne d'entrée d'origine. Cela indique à la fonction de continuer là où elle s'est arrêtée et de rechercher le jeton suivant dans la chaîne.
- La fonction continue de rechercher des caractères délimiteurs et renvoie des pointeurs vers le début des jetons suivants jusqu'à ce qu'elle atteigne la fin de la chaîne, auquel cas elle renvoie `NULL`. Approches à suivre
Méthode 2 - Un programme qui utilise des boucles et la fonction strtok() et plusieurs délimiteurs pour afficher le code
Méthode 1 Ci-dessous se trouve le programme pour afficher le code en utilisant une boucle avec la fonction strtok() et un délimiteur unique
Exemple 1
#include <iostream> #include <cstring> // Include the header for strtok() using namespace std; int main() { char str[] = "Hi, this topic tells about strtok() function"; char* ptr; ptr = strtok(str, " "); while (ptr != NULL) { cout << ptr << endl; ptr = strtok(NULL, " "); } return 0; }
Sortie
Hi, this topic tells about strtok() function
The '|' and'' (space) delimiters are used to tokenize the string "The boy|is|standing|with his pet|lazy dog." in this example. Once with the string as the first argument and the characters '|' and'' as the second argument, the strtok() method is called twice. Following calls return the remaining tokens, the initial call returns the first token, "The." Until all tokens have been extracted, the loop keeps running.
#include <iostream> #include <cstring> int main() { char str[] = "The boy|is|standing|with his pet|lazy dog."; char* token = strtok(str, "| "); while (token != NULL) { std::cout << token << std::endl; token = strtok(NULL, "| "); } return 0; }
The boy is standing with his pet lazy dog.
总之,C++的strtok函数是一个有用且有效的用于操作字符串的工具。尽管它有一些重要的限制和潜在的缺点,但它仍然是解析和处理文本数据的常见选择,并且对于任何编码人员来说都是一个有用的工具。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!