Code:
#include iostream
#include string.h
#include vector
using namespace std;
void input_string(vector
{
char a;
while (1)
{
a = getchar();
if (a == '\n')
break;
str.push_back(a);
}
return;
}
void print_string(vector
{
for (std::vector
{
cout<<*it;
}
return;
}
int match_string(vector
{
vector
int i = 0;
p = original. begin();
while (r <= match.end() && p <= original.end())
{
r = match.begin();
while (*p != *r && p < original.end())
{
p++;
i++;
}
q = p;
while (*p == *r && r <= match.end() && p<=original.end())
{
p++; i++;
r++;
}
if (r >= match.end())
{
original.erase(original.begin(), q + 1);
return (i - match.size() + 1);
}
if (p >= original.end())
return 0;
p = ++q;
}
}
int main()
{
std::vector
int i,result,k=0,sum=0;
cout<<"Enter String:";
input_string(original);
cout<<"Enter Search Pattern:";
input_string(match);
if (match.size() > original.size())
{
cout<<"Error:Original string too small.";
}
do
{
result = match_string(original, match);
sum += result; //to store previous found position
if (result > 0)
{
k++;
cout<<"\nMatch found from Position = "<
}
} while (result > 0); //loop to find all patterns
if (k == 0)
cout<<"Error:Match Not Found";
return 0;
}
Output:
Enter String:all men went to apall mall
Enter Search Pattern:all
Match found from Position = 1
Match found from Position = 19
Match found from Position = 24
More C++ Programs: