Maison > développement back-end > C++ > Comment remplacer efficacement du texte dans une chaîne en C ?

Comment remplacer efficacement du texte dans une chaîne en C ?

Barbara Streisand
Libérer: 2024-11-08 03:18:01
original
622 Les gens l'ont consulté

How to Efficiently Replace Text within a String in C  ?

Recherche et remplacement de texte dans une chaîne standard

Dans divers scénarios de programmation, il devient essentiel de manipuler des chaînes en remplaçant des caractères ou des sous-chaînes spécifiques. Pour les chaînes standard en C , il existe des méthodes efficaces pour effectuer des opérations de recherche et de remplacement.

Utilisation de la fonction std::replace

La fonction std::replace fournit un moyen simple de remplacer les occurrences d'une sous-chaîne dans une chaîne. La syntaxe de std::replace est la suivante :

std::string& replace(std::size_t pos, std::size_t n, const std::string& str);
Copier après la connexion

Ici, pos représente la position de départ, n indique le nombre de caractères à remplacer et str est la chaîne de remplacement.

Exemple :

Considérez la chaîne suivante :

std::string s("One hello, two hellos.");
Copier après la connexion

Pour remplacer toutes les instances de "hello" par "world", vous pouvez utiliser le code suivant :

s.replace(s.find("hello"), s.find("hello") + 5, "world"); // Find the position of "hello", replace 5 characters (length of "hello") with "world"
Copier après la connexion

Utilisation de boost::replace_all

La bibliothèque Boost offre une option plus pratique pour effectuer des opérations de recherche et de remplacement avec sa fonction boost::replace_all. Il faut une chaîne, une chaîne à rechercher et une chaîne à remplacer.

Exemple :

Pour remplacer toutes les occurrences de "foo" par "bar" dans la chaîne suivante :

std::string target("Would you like a foo of chocolate. Two foos of chocolate?");
Copier après la connexion

En utilisant boost::replace_all, vous pouvez le faire comme suit :

#include <boost/algorithm/string.hpp> // Include the Boost library

...

boost::replace_all(target, "foo", "bar");
Copier après la connexion

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal