How to remove all instances of the pattern from a string?
string str = \"red tuna, blue tuna, black tuna, one tuna\";
string pattern = \"tuna\";
Try something like:
void replaceAll(std::string& str, const std::string& from, const std::string& to) {
if(from.empty())
return;
size_t start_pos = 0;
while((start_pos = str.find(from, start_pos)) != std::string::npos) {
str.replace(start_pos, from.length(), to);
start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
}
}
From Replace part of a string with another string
Removes all instances of the pattern from a string,
#include <string>
#include <iostream>
using namespace std;
void removeSubstrs(string& s, string& p) {
string::size_type n = p.length();
for (string::size_type i = s.find(p);
i != string::npos;
i = s.find(p))
s.erase(i, n);
}
int main() {
string str = "red tuna, blue tuna, black tuna, one tuna";
string pattern = "tuna";
removeSubstrs(str, pattern);
cout << str << endl;
}
This is a basic question and you'd better take a look at the string capabilities in the standard library.
#include <iostream>
#include <string>
int main() {
std::string str = "red tuna, blue tuna, black tuna, one tuna";
std::string pattern = "tuna";
std::string::size_type i = str.find(pattern);
while (i != std::string::npos) {
str.erase(i, pattern.length());
i = str.find(pattern, i);
}
std::cout << str;
}
Example
Since C++11 you have another solution (thanks Joachim for reminding me of this) based on regular expressions
#include <iostream>
#include <string>
#include <regex>
int main() {
std::string str = "red tuna, blue tuna, black tuna, one tuna";
std::regex pattern("tuna");
std::cout << std::regex_replace(str, pattern, "");
}
Example
This is the basic logic for better understanding Here is the code in c++
string s,x; //s is the string , x is the substring
int a,l;
cin>>s>>x;
l=x.length();
while(true)
{
a=s.find(x);
if(a==-1)
{break;} // if substring is not found
else
{
s.erase(a,l); //if substring is found
}
}
if(s.length()==0) // if string length becomes null printing 0
cout<<0<<"\n";
else
cout<<s<<endl; // else printing the string
example: input-shahaha output-shha