I'm looking for replace all algorithm which replaced all occurrences of substring after specific position. So far I have replace all copy approach. What is most convenient way to do it without allocation of new string except this one? Does exist convenient way to do it with boost? 
#include <iostream>
#include <string>
#include <boost/algorithm/string/replace.hpp>
int main() {
    std::string str = "1234 abc1234 marker 1234 1234 123 1 12 134 12341234";
    const std::string marker("marker"); 
    size_t pos = str.find(marker);
    if (pos == std::string::npos) {
        return 0;
    }
    pos += marker.length();
    std::string str_out(str, 0, pos);
    boost::algorithm::replace_all_copy(std::back_inserter(str_out), str.substr(pos, std::string::npos), "12", "XXXX");
    std::cout << str <<  std::endl;
    std::cout << str_out <<  std::endl;
}
 
     
    