Find and Replace all occurrences of a sub string in C++

Find all occurrences of a substring in a string c++: In the previous article, we have discussed about Converting a String to Upper & Lower Case in C++ using STL & Boost Library. Let us learn how to find and Replace all occurrences of a sub string in C++ Program.

Finding and replacing all occurrences of a sub string in C++

Boost replace_all: In this article we will discuss about how we can find and replace all occurrences of a sub string.

We will see 3 different ways to achieve this.

Method-1 : Using STL

// Program :

#include <iostream>
#include <string>

void FindAndReplace(std::string & data, std::string Searching, std::string replaceStr)
{
    // Getting the first occurrence
    size_t position = data.find(Searching);
    // Repeating till end is reached
    while( position != std::string::npos)
    {
        // Replace this occurrence of Sub String
        data.replace(position, Searching.size(), replaceStr);
        // Get the next occurrence from the current position
        position =data.find(Searching, position + replaceStr.size());
    }
}
int main()
{
    // Original String
    std::string data = "BtechGeeks is Good";
    std::cout<<data<<std::endl;
    // Replacing 'Good' with 'Best'
    FindAndReplace(data, "Good", "Best");
    std::cout<<data<<std::endl;
    return 0;
}
Output :
BtechGeeks is Good
BtechGeeks is Best

Method-2 : Using Boost::replace_all

// Program :

#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>

int main()
{
    std::string sample = "BtechGeeks is Good";
    std::cout<<sample<<std::endl;
    // Replacingb all occurrences of 'Good' with 'Best'
    // This is case Sensitive Version
    boost::replace_all(sample, "Good", "Best");
    std::cout<<sample<<std::endl;
}
Output :
BtechGeeks is Good
BtechGeeks is Best

Method-3 : Using Boost::ireplace_all

// Program :

#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>

int main()
{
    std::string sample = "BtechGeeks is Good";
    std::cout<<sample<<std::endl;
    // Replacingb all occurrences of 'Good' with 'Best'
    // This is case Sensitive Version
    boost::ireplace_all(sample, "Good", "Best");
    std::cout<<sample<<std::endl;
}
Output :
BtechGeeks is Good
BtechGeeks is Best