Para substituirmos trechos ou padrões dentro de nossas string utilizamos o método replace
                que recebe uma posição, uma quantidade e uma string para substituição. 
            
            Sintaxe
            public string& replace(size_t pos, size_t len, const string& str);
string& replace (const_iterator i1, const_iterator i2, const string& str);
string& replace (size_t pos,size_t len, const string& str, size_t subpos, size_t sublen = npos);
string& replace (size_t pos, size_t len, const char* s);
string& replace (const_iterator i1, const_iterator i2, const char* s);
string& replace (size_t pos, size_t len, const char* s, size_t n);
string& replace (const_iterator i1, const_iterator i2, const char* s, size_t n);
string& replace (size_t pos, size_t len, size_t n, char c);
string& replace (const_iterator i1, const_iterator i2, size_t n, char c);
template <class InputIterator>  string& replace (const_iterator i1, const_iterator i2, InputIterator first, InputIterator last);
string& replace (const_iterator i1, const_iterator i2, initializer_list <char> il);
            Onde
            pos: posição para substituição.
len: quantidade de caracters para substituição.
str: string para substituiçao
            Retorno
            A própria string contendo a subsituição str.
            Exemplo
            
#include <iostream>
using namespace std;
int main()
{
    string str1="Uma XXXXXX qualquer";
    cout << str1 << endl;
    str1.replace(4,6,"string"); //substituir XXXXXX por string
    cout << str1 << endl;
   
    return 0;
}
            Saída
            
Uma XXXXXX qualquer
Uma string qualquer