Maison >développement back-end >C++ >Implémenter la fonction strtok() en C++

Implémenter la fonction strtok() en C++

WBOY
WBOYavant
2023-09-01 19:21:041567parcourir

La fonction

Implémenter la fonction strtok() en C++

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.

Caractéristiques de la fonction strtok()

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

.

Grammaire

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.

Algorithme

  • É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 (`'

  • Étape 5

    - 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.

  • Étape 6

    - 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 1

- Un programme qui utilise des boucles et la fonction strtok() et un seul séparateur pour afficher le code.

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

Cet exemple montre comment utiliser strtok pour segmenter une chaîne par espaces. La chaîne d'entrée str est d'abord transmise à strtok avec le délimiteur " ". Le premier appel à strtok renvoie un pointeur vers le premier jeton (« Salut »), qui est imprimé sur la console. strtok continue de tokeniser la chaîne jusqu'à ce qu'il n'y ait plus de jetons et que chaque jeton soit imprimé sur la console. Veuillez noter que pour les appels ultérieurs à strtok, nous passons un pointeur nul comme premier argument, indiquant que nous voulons continuer à tokeniser la chaîne d'origine

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 

Méthode 2

Vous trouverez ci-dessous le programme permettant d'afficher du code avec plusieurs délimiteurs à l'aide des fonctions loop et strtok(). Vous trouverez ci-dessous le code du programme correspondant.

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.

Example-2

#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; 
} 

Output

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer