Jest to najprostszy algorytm wyszukiwania wzorca w tekście. Polega na porównaniu do siebie fragmentu tekstu zwróconego przez funkcję substr do wzorca. Funkcja substr zwraca podciąg na podstawie indeksu początkowego i długości podciągu.
Przeanalizujemy to na przykładzie. Niech naszym tekstem, czyli zmienną n1 będzie słowo: algorytmika , a wzorcem (zmienną n2) słowo algorytm. Indeksem początkowym w funkcji substr będzie oczywiście zmienna i, która jest ustawiona na 0. Długością podciągu będzie długość naszego wzorca. Tak więc fragment kodu:
n1.substr(i, n2.size())
zwróci nam podciąg algorytm. Następnie jest on przyrównywany do wzorca, którym w naszym przypadku jest właśnie algorytm. Warunek zostanie spełniony, a program na ekran wypisze komunikat, że wzorzec został znaleziony i poda przedział (numery indeksów), w którym wzorzec znajduje się w tekście.
Przykładowy kod:
#include <iostream>
using namespace std;
int main ()
{
int i;
string n1, n2;
cout << "Podaj tekst ";
cin >> n1;
cout << "Podaj wzorzec ";
cin >> n2;
for (i = 0; i <= n1.size() - n2.size(); i++)
{
if (n1.substr(i, n2.size()) == n2)
{
cout << "Znaleziono wzorzec w tekscie. "
<< i << " - " << n2.size() + i << endl;
}
}
return 0;
}