Comment remplacer toutes les occurrences d'un caractère dans une chaîne en C++? (std::string)
Bonjour à tous ! Je viens de commencer à apprendre le C++ et j'ai rencontré un problème : je dois remplacer tous les espaces dans une chaîne par le caractère underscore. Supposons que j'ai la chaîne "Hello World from C++". Je veux obtenir "Hello_World_from_C++".
Je sais qu'en C# il existe la méthode `.Replace()` qui fait cela en une ligne. En Python aussi il y a `str.replace()`. Comment faire cela en C++ ? J'utilise `std::string`.
J'ai essayé d'écrire une boucle, mais je n'ai pas réussi. Voici mon code raté :
```cpp
#include
#include
int main() {
std::string str = "Hello World from C++";
for (size_t i = 0; i < str.length(); i++) {
if (str[i] == ' ') {
str[i] = '_';
}
}
std::cout << str << std::endl;
return 0;
}
```
Ce code fonctionne, mais il est très primitif. On m'a dit qu'il existe des façons plus correctes et efficaces, surtout si la chaîne est longue ou si l'on doit remplacer non pas un seul caractère mais une séquence de caractères (par exemple, remplacer tous les "abc" par "xyz").