Comment diviser la chaîne en C ++

Comment diviser la chaîne en C ++
Travailler avec les données de chaîne est un élément essentiel 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 multiples existent en C ++ pour effectuer la même tâche, comme l'utilisation getline () fonction, strtok () fonction, en utilisant trouver() et effacer() fonctions, etc. Les utilisations de ces fonctions pour diviser les 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 le code Visual Studio, installez les extensions nécessaires pour compiler le code source C ++ pour créer le code exécutable. Ici, l'application de code Visual Studio a été utilisée pour compiler et exécuter le code C ++.

Fonction de chaîne divisée à l'aide de getline ()

La fonction getline () est utilisée pour lire les caractères d'une chaîne ou un contenu de fichier jusqu'à ce qu'un délimiteur ou un 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:

Isttream & Getline (Isttream & Is, String & Str, char Delim);

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 utilisera 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 getline () fonction. Une valeur de chaîne de plusieurs mots a été attribuée dans une variable, et l'espace a été utilisé comme séparateur. Une variable vectorielle a été déclarée stocker les mots extraits. Ensuite, la boucle 'for' a utilisé pour imprimer chaque valeur à partir du tableau vectoriel.

// Inclure les bibliothèques nécessaires
#inclure
#inclure
#inclure
#inclure
int main()

// définir les données de chaîne qui seront divisées
std :: string strdata = "Learn C ++ Programming";
// Définir les données de contenu qui seront travaillées comme délimiter
const char séparateur = ";
// définir la variable de tableau dynamique des chaînes
STD :: Vector outputArray;
// construire un flux à partir de la chaîne
std :: StringStream streamData (strdata);
/ *
Déclarer la variable de chaîne qui sera utilisée
Pour stocker les données après la scission
* /
std :: string val;
/ *
La boucle iratera les données divisées et
insérer les données dans le tableau
* /
while (std :: getline (streamdata, val, séparateur))
sortie.push_back (val);

// imprime les données divisées
std :: cout << "The original string is:" << strData << std::endl;
// Lisez le tableau et imprimez les données divisées
std :: cout <<
"\ nLes valeurs après avoir divisé la chaîne en fonction de l'espace:" <<
std :: endl;
pour (Auto & Val: OutputArray)
std :: cout << val << std::endl;

retour 0;

Sortir:

La sortie suivante apparaîtra après avoir exécuté le code ci-dessus.

Chaîne divisée à 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 en fonction d'un délimiteur. Il renvoie un pointeur vers le token suivant s'il existe; Sinon, il renvoie une valeur nulle. Le chaîne.H Le fichier d'en-tête est nécessaire pour utiliser cette fonction. Une boucle nécessitera la lecture de toutes les valeurs divisé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:

char * strtok (char * str, const char * délimiter);

Créez un fichier C ++ avec le code suivant pour diviser une chaîne en utilisant la fonction strtok (). Un tableau de caractères est défini dans le code contenant un côlon (':') comme séparateur. Ensuite, le strtok () La fonction est appelée avec la valeur de la chaîne et le délimiteur pour générer le premier jeton. Le 'alors que'Loop est défini pour générer les autres jetons et les valeurs de jeton jusqu'à ce que NUL la valeur est trouvée.

// Inclure les bibliothèques nécessaires
#inclure
#inclure
int main()

// déclare un tableau de caractères
Char StraRray [] = "Mehrab Hossain: It Professional: Mahrab @ gmail.com: +8801726783423 ";
// Renvoie la première valeur de jeton en fonction de ':'
char * tokenvalue = strtok (starray, ":");
// Initialiser la variable de compteur
int compteur = 1;
/ *
Itérer la boucle pour imprimer la valeur de jeton
et diviser les données de chaîne restantes pour obtenir
la valeur de jetons suivante
* /
Pendant (tokenvalue != Null)

si (compteur == 1)
printf ("name:% s \ n", tokenvalue);
sinon si (compteur == 2)
printf ("Occupation:% s \ n", tokenValue);
sinon si (compteur == 3)
printf ("e-mail:% s \ n", tokenvalue);
autre
printf ("mobile non. :% s \ n ", tokenValue);
tokenValue = strtok (null, ":");
compteur ++;

retour 0;

Sortir:

La sortie suivante apparaîtra après avoir exécuté le code ci-dessus.

Fonctions de la chaîne de find () et d'effondrement ()

La chaîne peut être divisée en C ++ en utilisant 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 basée sur un délimiteur particulier. La valeur du jeton est générée en trouvant la position de délimiteur en utilisant la fonction find (), et la valeur de jeton sera stockée après avoir retiré le délimiteur en utilisant la fonction efface (). 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 vecteur seront imprimées.

// Inclure les bibliothèques nécessaires
#inclure
#inclure
#inclure
int main()
// définir la chaîne
std :: string stringData = "Bangladesh et Japon et Allemagne et Brésil";
// définir le séparateur
std :: string séparateur = "et";
// Déclarer la variable vectorielle
STD :: Vector pays;
// Déclarer la variable entière
position int;
// Déclarer la variable de chaîne
Std :: String Outstr, jeton;
/ *
Diviser la chaîne à l'aide de la fonction substr ()
et ajoutant le mot divisé dans le vecteur
* /
while ((position = stringData.trouver (séparateur)) != std :: string :: npos)
Token = StringData.substr (0, position);
// Retirez l'espace supplémentaire de l'avant de la chaîne divisée
pays.push_back (jeton.effacer (0, jeton.find_first_not_of ("")));
stringdata.Effacer (0, position + séparateur.longueur());

// imprime tout le mot divisé sauf le dernier
pour (const Auto & Outstr: Country)
std :: cout << outstr << std::endl;

// imprime le dernier mot séparé
std :: cout << stringData.erase(0, stringData.find_first_not_of(" ")) << std::endl;
retour 0;

Sortir:

La sortie suivante apparaîtra après avoir exécuté le code ci-dessus.

Conclusion

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