Como substituir todas as ocorrências de um caractere em uma string em C++? (std::string)
Olá a todos! Comecei a aprender C++ e me deparei com um problema: preciso substituir todos os espaços em uma string pelo caractere sublinhado. Suponha que temos a string "Hello World from C++". Quero obter "Hello_World_from_C++".
Sei que em C# existe o método `.Replace()`, que faz isso em uma linha. Em Python também tem `str.replace()`. Como fazer isso em C++? Estou usando `std::string`.
Tentei escrever um loop, mas não deu certo. Aqui está meu código sem sucesso:
```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;
}
```
Esse código funciona, mas é muito primitivo. Disseram-me que existem formas mais corretas e eficientes, especialmente se a string for grande ou se for necessário substituir não um caractere, mas uma sequência de caracteres (por exemplo, substituir todos os "abc" por "xyz").