Maison >développement back-end >C++ >Comment remplacer efficacement les sous-chaînes dans les chaînes C ?

Comment remplacer efficacement les sous-chaînes dans les chaînes C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-22 05:02:13367parcourir

How to Efficiently Replace Substrings in C   Strings?

Remplacer une partie d'une chaîne par une autre chaîne

Remplacer une sous-chaîne dans une chaîne est une tâche courante en programmation, et C propose plusieurs façons pour le faire. Une approche consiste à utiliser les fonctions standard de la bibliothèque C find et replace.

Utilisation de find et replace

La fonction find prend une chaîne et une sous-chaîne comme arguments, et elle renvoie la position de la sous-chaîne dans la chaîne. Si la sous-chaîne n'est pas trouvée, find renvoie string :: npos. Pour remplacer une sous-chaîne par une autre sous-chaîne, vous pouvez utiliser la fonction replace. La fonction de remplacement prend une chaîne, une sous-chaîne à remplacer et une nouvelle sous-chaîne par laquelle la remplacer. Voici un exemple :

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");

Utilisation de replaceAll

Si vous devez remplacer toutes les occurrences d'une sous-chaîne par une autre sous-chaîne, vous pouvez utiliser une fonction appelée replaceAll. Voici un exemple d'implémentation de replaceAll :

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(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
    }
}

replace et replaceAll sont efficaces et simples à utiliser. Ils conviennent au remplacement de sous-chaînes dans des chaînes dans diverses applications.

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