String Replace in C++

c++, macos, string

Solution

A loop should work with find and replace

void searchAndReplace(std::string& value, std::string const& search,std::string const& replace)
{
    std::string::size_type  next;

    for(next = value.find(search);        // Try and find the first match
        next != std::string::npos;        // next is npos if nothing was found
        next = value.find(search,next)    // search for the next match starting after
                                          // the last match that was found.
       )
    {
        // Inside the loop. So we found a match.
        value.replace(next,search.length(),replace);   // Do the replacement.
        next += replace.length();                      // Move to just after the replace
                                                       // This is the point were we start
                                                       // the next search from. 
    }
}

Problem

I've spent the last hour and a half trying to figure out how to run a simple search and replace on a `string` object in C++. I have three string objects. ``` string original, search_val, replace_val; ``` I want to run a search command on `original` for the `search_val` and replace all occurrences with `replace_val`. NB: Answers in pure C++ only. The environment is XCode on the Mac OSX Leopard.

Original source