Maison >développement back-end >C++ >Comment puis-je remplacer des parties d'une chaîne en C ?

Comment puis-je remplacer des parties d'une chaîne en C ?

DDD
DDDoriginal
2024-12-22 18:08:11710parcourir

How Can I Replace Parts of a String in C  ?

Remplacer un segment de chaîne par une nouvelle chaîne

En C , remplacer une partie d'une chaîne par une autre chaîne nécessite une combinaison d'opérations. Bien que certaines bibliothèques proposent une fonction replace() dédiée pour les remplacements directs, voici comment vous pouvez l'aborder à l'aide des fonctions C standard :

Utilisation des fonctions find() et replace()

La fonction find() localise la position d'une sous-chaîne dans une chaîne. En combinant cela avec la fonction replace(), qui remplace une plage spécifiée par une autre chaîne, vous pouvez effectivement remplacer une partie de la chaîne :

bool replace(std::string& str, const std::string& from, const std::string& to) {
    size_t start_pos = str.find(from);
    if(start_pos == std::string::npos)
        return false;
    str.replace(start_pos, from.length(), to);
    return true;
}

std::string string("hello $name");
replace(string, "$name", "Somename");

Cette approche remplace la première occurrence de la sous-chaîne "$name " par "Somename."

Remplacement de toutes les occurrences par replaceAll

Pour remplacer toutes les occurrences d'un sous-chaîne, vous pouvez étendre la méthode replace() pour rechercher et remplacer plusieurs instances dans la chaîne :

void replaceAll(std::string& str, const std::string& from, const std::string& to) {
    if(from.empty())
        return;
    size_t start_pos = 0;
    while((start_pos = str.find(from, start_pos)) != std::string::npos) {
        str.replace(start_pos, from.length(), to);
        start_pos += to.length(); // Adjust start position if 'to' contains 'from'
    }
}

Cette fonction effectue un remplacement successif de toutes les occurrences de la sous-chaîne "de" par la chaîne "à " dans la chaîne donnée.

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:
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