Comment diviser une chaîne en C++

How Split String C



Travailler avec des données de chaîne est une partie essentielle de tout langage de programmation. Parfois, nous devons diviser les données de chaîne à des fins de programmation. La fonction split() existe dans de nombreux langages de programmation pour diviser la chaîne en plusieurs parties. Il n'y a pas de fonction split() intégrée en C++ pour diviser la chaîne, mais de nombreuses façons existent en C++ pour effectuer la même tâche, comme l'utilisation obtenir la ligne() fonction, strtok() fonction, en utilisant trouve() et effacer() fonctions, etc. Les utilisations de ces fonctions pour diviser des chaînes en C++ ont été expliquées dans ce tutoriel.

Prérequis

Avant de vérifier les exemples de ce tutoriel, vous devez vérifier que le compilateur g++ est installé ou non dans le système. Si vous utilisez Visual Studio Code, installez les extensions nécessaires pour compiler le code source C++ afin de créer le code exécutable. Ici, l'application Visual Studio Code a été utilisée pour compiler et exécuter le code C++.







Diviser la chaîne à l'aide de la fonction getline()

La fonction getline() est utilisée pour lire les caractères d'une chaîne ou d'un contenu de fichier jusqu'à ce qu'un délimiteur ou séparateur particulier soit trouvé et stocker chaque chaîne d'analyse dans une autre variable de chaîne. La fonction continuera la tâche jusqu'à ce que le contenu complet de la chaîne ou du fichier soit analysé. La syntaxe de cette fonction est donnée ci-dessous.



Syntaxe:



istream&obtenir la ligne(istream&est, chaîne&str,carboniserdécaper);

Ici, le premier paramètre, isstream, est l'objet d'où les caractères seront extraits. Le deuxième paramètre est une variable de chaîne qui stockera la valeur extraite. Le troisième paramètre est utilisé pour définir le délimiteur qui sera utilisé pour extraire la chaîne.





Créez un fichier C++ avec le code suivant pour diviser une chaîne en fonction du délimiteur d'espace à l'aide du obtenir la ligne() fonction. Une valeur de chaîne de plusieurs mots a été affectée à une variable et un espace a été utilisé comme séparateur. Une variable vectorielle a été déclarée pour stocker les mots extraits. Ensuite, la boucle 'for' a utilisé pour imprimer chaque valeur du tableau vectoriel.

//Inclure les bibliothèques nécessaires
#comprendre
#comprendre
#comprendre
#comprendre

entierprincipale()
{
//Définir les données de chaîne qui seront fractionnées
les heures::chaîne de caractèresstrData= « Apprendre la programmation C++ »;
//Définir les données constantes qui seront utilisées comme délimiteur
const carboniserséparateur= '';
//Définition de la variable tableau dynamique des chaînes
les heures::vecteurtableau de sortie;
//Construire un flux à partir de la chaîne
les heures::stringstreamstreamData(strData);
/ *
Déclarer la variable chaîne qui sera utilisée
pour stocker des données après la scission
* /

les heures::chaîne de caractèresheures;
/ *
La boucle itérera les données fractionnées et
insérer les données dans le tableau
* /

tandis que (les heures::obtenir la ligne(streamData, val, séparateur)) {
tableau de sortie.repousser(heures);
}
//Imprimer les données fractionnées
les heures::cout << « La chaîne d'origine est : » <<strData<<les heures::fin;
//Lire le tableau et imprimer les données fractionnées
les heures::cout << ' Les valeurs après division de la chaîne en fonction de l'espace :' <<les heures::fin;
pour (auto &heures:tableau de sortie) {
les heures::cout <<heures<<les heures::fin;
}
revenir 0;
}

Sortir:



La sortie suivante apparaîtra après l'exécution du code ci-dessus.

Diviser la chaîne à l'aide de la fonction strtok()

La fonction strtok() peut être utilisée pour diviser une chaîne en tokenisant la partie de la chaîne basée sur un délimiteur. Il renvoie un pointeur vers le jeton suivant s'il existe ; sinon, il renvoie une valeur NULL. Les chaîne.h fichier d'en-tête est requis pour utiliser cette fonction. Une boucle nécessitera la lecture de toutes les valeurs fractionnées de la chaîne. Le premier argument contient la valeur de chaîne qui sera analysée et le deuxième argument contient le délimiteur qui sera utilisé pour générer le jeton. La syntaxe de cette fonction est donnée ci-dessous.

Syntaxe:

carboniser * strtok ( carboniser *str,const carboniser *délimiteurs);

Créez un fichier C++ avec le code suivant pour diviser une chaîne à l'aide de la fonction strtok(). Un tableau de caractères est défini dans le code contenant un deux-points(':') comme séparateur. Ensuite, le strtok() La fonction est appelée avec la valeur de chaîne et le délimiteur pour générer le premier jeton. Les ' tandis que ’ boucle est définie pour générer les autres jetons et les valeurs des jetons jusqu'à ce que le NUL la valeur est trouvée.

//Inclure les bibliothèques nécessaires
#comprendre
#comprendre

entierprincipale()
{
//Déclare un tableau de caractères
carboniserstrArray[] = 'Mehrab Hossain : IT Professional : [email protected] :+8801726783423';
//Renvoyer la première valeur du jeton basée sur ':'
carboniser *jetonValeur= strtok(tableau str,':');
//Initialisation de la variable compteur
entiercontrer= 1;
/ *
Itérer la boucle pour imprimer la valeur du jeton
et diviser les données de chaîne restantes pour obtenir
la prochaine valeur du jeton
* /

tandis que (jetonValeur!= NUL)
{
si(contrer== 1)
imprimer('Noms ', jetonValeur);
autre si(contrer== 2)
imprimer('Occupation : %s ', jetonValeur);
autre si(contrer== 3)
imprimer('Courriel : %s ', jetonValeur);
autre
imprimer('N° de portable : %s ', jetonValeur);
jetonValeur= strtok(NUL,':');
contrer++;
}
revenir 0;
}

Sortir:

La sortie suivante apparaîtra après l'exécution du code ci-dessus.

Diviser la chaîne à l'aide des fonctions find () et effacer ()

La chaîne peut être divisée en C++ à l'aide des fonctions find () et effacer (). Créez un fichier C++ avec le code suivant pour vérifier les utilisations des fonctions find () et effacer () pour diviser une valeur de chaîne en fonction d'un délimiteur particulier. La valeur du jeton est générée en trouvant la position du délimiteur à l'aide de la fonction find(), et la valeur du jeton sera stockée après avoir supprimé le délimiteur à l'aide de la fonction effacer(). Cette tâche sera répétée jusqu'à ce que le contenu complet de la chaîne soit analysé. Ensuite, les valeurs du tableau vectoriel seront imprimées.

//Inclure les bibliothèques nécessaires
#comprendre
#comprendre
#comprendre

entierprincipale(){
//Définir la chaîne
les heures::chaîne de caractèresstringData= « Le Bangladesh et le Japon et l'Allemagne et le Brésil »;
//Définir le séparateur
les heures::chaîne de caractèresséparateur= 'et';
//Déclarer la variable vectorielle
les heures::vecteurpays{};
//Déclarer la variable entière
entierposition;
//Déclarer la variable chaîne
les heures::chaîne de caractèresoutstr, jeton;

/ *
Divisez la chaîne à l'aide de la fonction substr()
et en ajoutant le mot divisé dans le vecteur
* /

tandis que ((position=stringData.trouve(séparateur)) !=les heures::chaîne de caractères::npos) {
jeton=stringData.sous-str(0, position);
//Supprime l'espace supplémentaire au début de la chaîne fractionnée
pays.repousser(jeton.effacer(0, jeton.find_first_not_of('')));
stringData.effacer(0, position+séparateur.longueur());
}
//Imprime tous les mots séparés sauf le dernier
pour (const auto &outstr:pays) {
les heures::cout <<outstr<<les heures::fin;
}
//Imprime le dernier mot divisé
les heures::cout <<stringData.effacer(0, chaîneDonnées.find_first_not_of('')) <<les heures::fin;
revenir 0;
}

Sortir:

La sortie suivante apparaîtra après l'exécution du code ci-dessus.

Conclusion

Trois façons différentes de diviser une chaîne en C++ ont été expliquées dans ce didacticiel en utilisant des exemples simples pour aider les nouveaux utilisateurs de Python à effectuer facilement l'opération de division en C++.