Comment remplacer un texte arbitraire dans la chaîne en C ++

September 25

La bibliothèque de chaîne Le C de plusieurs fonctions utiles pour la manipulation des chaînes, mais aucune recherche générale et remplacer. Bien qu'il y ait beaucoup d'informations sur des algorithmes optimisés pour la mise en œuvre arbitraire remplacement de texte, de nombreux algorithmes impliquent des structures de données complexes et techniques difficiles à suivre, tels que l'arithmétique des pointeurs. Pour la plupart des programmes, recherche et remplacement ne sont pas un goulot d'étranglement de performance, il est donc plus logique d'utiliser un algorithme simple, facilement compréhensible. Ceci est rendu possible en tirant profit de certaines des fonctions de chaînes existantes pour gérer la manipulation de bas niveau.

Instructions

1 Écrivez le contour de votre fonction de remplacement de chaîne:

chaîne replaceSubstring (source de chaîne, string match, chaîne de remplacement)
{
ficelle = "";
retourneront;
}

2 Ajouter une boucle qui trouve tous les matches de chaîne dans la chaîne. Les lastpos variables seront utiles lorsque vous commencez à ajouter le code pour construire la nouvelle chaîne:

pos size_t = 0; // Démarrer la recherche sur le premier caractère
size_t lastpos = 0;
tandis que ((pos = source.find (correspondance, pos))! = string :: npos) // boucle jusqu'à ce que l'absence de correspondance
{
pos = pos + match.lengh (); // Démarrer la recherche pour le prochain match à la fin de ce match
lastpos = pos;
}

3 Construire la chaîne de sortie que se trouvent matches:

pos size_t = 0; // Démarrer la recherche sur le premier caractère
size_t lastpos = 0;
tandis que ((pos = source.find (correspondance, pos))! = string :: npos) // boucle jusqu'à ce que l'absence de correspondance
{
sortie + = source.substr (lastpos, pos - lastpos); // Ajouter tous les caractères qui ont été ignorés au cours
sortie + = remplacer;
pos = pos + match.lengh (); // Démarrer la recherche pour le prochain match à la fin de ce match
lastpos = pos;
}
sortie + = source.substr (lastpos); // Ajouter le reste de la chaîne source


          

Post a comment: