How do I Search/Find and Replace in a standard string?


Question

Is there a way to replace all occurrences of a substring with another string in std::string?

For instance:

void SomeFunction(std::string& str)
{
   str = str.replace("hello", "world"); //< I'm looking for something nice like this
}
1
89
12/20/2011 11:34:11 AM

Accepted Answer

Why not implement your own replace?

void myReplace(std::string& str,
               const std::string& oldStr,
               const std::string& newStr)
{
  std::string::size_type pos = 0u;
  while((pos = str.find(oldStr, pos)) != std::string::npos){
     str.replace(pos, oldStr.length(), newStr);
     pos += newStr.length();
  }
}
71
6/22/2016 11:47:06 AM

#include <boost/algorithm/string.hpp> // include Boost, a C++ library
...
std::string target("Would you like a foo of chocolate. Two foos of chocolate?");
boost::replace_all(target, "foo", "bar");

Here is the official documentation on replace_all.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon