Comment diviser les chaînes à l'aide de délimiter en C ++

Comment diviser les chaînes à l'aide de délimiter en C ++
La division d'une chaîne à l'aide d'un délimiteur est une opération courante dans la programmation, en particulier lorsque vous travaillez avec des données de texte. UN délimiteur est un caractère ou une séquence de caractères utilisés pour séparer une section d'une chaîne d'un autre. Lorsqu'un texte est séparé en sous-chaînes plus petites en utilisant un délimiteur, le délimiteur ou le séparateur est prédéterminé. De nombreuses tâches de programmation, telles que l'analyse des données d'entrée, la tokenisation de texte et le traitement des chaînes, utilisent cette technique. Il y a plusieurs étouffant Méthodes disponibles en C ++, chacune ayant des avantages et des inconvénients.

Dans cet article, nous explorerons certaines des façons courantes de diviser une chaîne à l'aide d'un délimiteur en c++.

Clissons divisés en utilisant le délimiteur en C++

En C ++, il existe plusieurs approches pour briser une chaîne à l'aide d'un délimiteur, notamment:

  • En utilisant les fonctions find () et substr ()
  • En utilisant la fonction strtok ()
  • Utilisation de la classe StringStream

1: en utilisant les fonctions find () et substr ()

Une chaîne peut être divisée en utilisant les fonctions C ++ trouver() et substr (). La première instance de sous-chaîne est située en utilisant le trouver() méthode. S'il n'y a plus d'occurrences, la pièce restante de la chaîne sera retournée après avoir été placée dans le vecteur. La sous-chaîne commençant au début du texte et se terminant au niveau du délimiteur peut ensuite être extraite en utilisant le substr () fonction. Nous pouvons continuer à le faire jusqu'à ce que toutes les sous-chaînes aient été obtenues.

Voici un exemple C ++ de la façon de diviser une chaîne à l'aide d'un délimiteur:

#inclure
#inclure
int main()
std :: string str = "pomme, banane, cerise";
std :: String Delimiter = ",";
size_t pos = 0;
Std :: String Token;
tandis que ((pos = str.trouver (délimiteur)) != std :: string :: npos)
jeton = str.substr (0, pos);
std :: cout << token << std::endl;
Str.Effacer (0, Pos + Demiter.longueur());

std :: cout << str << std::endl;
retour 0;

Dans l'exemple ci-dessus, une chaîne nommée "Str" et un délimiteur nommé «Demiter» sont définis. Les sous-chaînes de "Str" sont ensuite extraits en utilisant une boucle de temps. L'emplacement du délimiteur est retourné par le trouver() Méthode, ou std :: String :: NPOS S'il ne peut pas être localisé. La sous-chaîne depuis le début de "Str" Jusqu'au délimiteur est extrait en utilisant «Substr ()» À cet endroit, et il est ensuite imprimé sur la console. La sous-chaîne extraite et le délimiteur sont ensuite retirés de "Str" en utilisant le "effacer()" fonction. Une fois qu'il n'y a plus de délimiteurs dans "Str", Nous répétons cette opération. Ensuite, nous avons sorti la dernière sous-chaîne "cerise" à la console.

Sortir

2: Utilisation de la fonction strtok ()

Le strtok () La fonction est une autre fonction en C ++ qui peut efficacement diviser les chaînes à l'aide d'un délimiteur dans n'importe quel programme C ++. Il retire deux entrées; la chaîne à diviser et le caractère délimiteur. Voici une implémentation de strtok () Fonction dans C ++:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

Char Str [100];
couter << " Enter a string: " <cin.getline (str, 100);
char * ptr;
ptr = strtok (str, ",");
couter << " \n Splitting the string: " << endl;
Pendant que (PTR != Null)

couter << ptr << endl;
ptr = strtok (null, ",");

retour 0;

Le strtok () La fonction est utilisée dans le code ci-dessus pour briser une chaîne d'entrée fournie par l'utilisateur dans les jetons, en utilisant une virgule et un espace comme délimiter. Ensuite, il publie chaque jeton sur la console sur une ligne séparée. Ceci est accompli en stockant la chaîne d'entrée dans un tableau char, en itérant sur les jetons avec un pointeur char, puis en divisant la chaîne à plusieurs reprises jusqu'à ce que tous les jetons aient été affichés.

Sortir

3: Utilisation de la classe Stringstream

En utilisant le La classe est une autre technique pour diviser une chaîne en C++. Il est possible d'entrer et de sortir des données formatées, y compris des chaînes, en utilisant cette classe. Une chaîne qui est gérée en tant que flux peut avoir des sous-chaînes extraites getline () méthode. Le getline () La méthode extrait la sous-chaîne jusqu'au délimiteur si nous lui fournissons le délimiteur en tant que paramètre.

Voici une illustration de la façon de diviser une chaîne en c++ en utilisant le Stringstream () fonction.

#inclure
#inclure
#inclure
#inclure
int main()
std :: string input_string = "Apple, banane, cerise";
STD :: Vector jetons;
std :: stringstream ss (input_string);
Std :: String Token;
while (std :: getline (ss, token, ','))
jetons.push_back (jeton);

pour (auto t: tokens)
std :: cout << t << std::endl;

retour 0;

Dans le code ci-dessus, un caractère délimiteur est utilisé pour diviser une chaîne d'entrée en jetons en utilisant . Avant d'extraire chaque jeton du En utilisant le délimiteur, le programme initialise un objet avec la chaîne d'entrée. Un vecteur de cordes est ensuite élargi par chaque jeton. Le programme se déroule ensuite à travers le vecteur, imprimant chaque jeton à la console à la fin.

Sortir

Conclusion

La division d'une chaîne à l'aide d'un délimiteur est une approche efficace en C ++ et il existe plusieurs fonctions intégrées en C ++ qui permettent de diviser les chaînes. Ces fonctions incluent find (), substr (), strtok () et brise classe. Les développeurs devraient considérer les exigences spécifiques de leur application et choisir la fonction qui fonctionne le mieux pour eux.