Avatar ·

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