Il n'y a pas de fonction intégrée en C++ pour faire cela. Si vous souhaitez remplacer toutes les instances d'une sous-chaîne par une autre, vous pouvez le faire en mélangeant les appels à string::find
y string::replace
. Par exemple :
size_t index = 0;
while (true) {
/* Locate the substring to replace. */
index = str.find("abc", index);
if (index == std::string::npos) break;
/* Make the replacement. */
str.replace(index, 3, "def");
/* Advance index forward so the next iteration doesn't pick it up as well. */
index += 3;
}
Dans la dernière ligne de ce code, j'ai incrémenté index
par la longueur de la chaîne qui a été insérée dans la chaîne. Dans cet exemple particulier - remplacer "abc"
con "def"
- cela n'est pas vraiment nécessaire. Cependant, dans un cadre plus général, il est important de sauter la chaîne qui vient d'être remplacée. Par exemple, si vous voulez remplacer "abc"
con "abcabc"
sans sauter le segment de chaîne nouvellement remplacé, ce code remplacerait continuellement des parties des chaînes nouvellement remplacées jusqu'à ce que la mémoire soit épuisée. Indépendamment, il pourrait être légèrement plus rapide de sauter ces nouveaux caractères de toute façon, puisque cela permet d'économiser un peu de temps et d'effort de la part de l'utilisateur. string::find
fonction.
J'espère que cela vous aidera !