Witam, mam pewien problem z szukajką. Metoda szukającca wygląda tak:
vector <int> Find_Pharse(string Pharse)
{
vector <int> Pharse_Found;
int found_pos;
this->Instances = 0;
for(int i=0; i<this->BOOK.size(); i++)
{
found_pos = this->BOOK[i].find(Pharse);
if(found_pos != string::npos)
{
Pharse_Found.push_back(i);
}
while(found_pos!=string::npos)
{
found_pos = this->BOOK[i].find(Pharse, found_pos+1);
this->Instances++;
}
}
return Pharse_Found;
}
Chodzi o to że gdy próbuję wyszukać pojedynczy wyraz dobrze mi zwraca numer wiersza, natomiast gdy chcę wyszukać np 2 wyrazy oddzielone spacja to program wariuje, zapetla sie, jedzie po wszystkich warunkach nie baczac na ify itd. Co moze byc nie tak?
A tu wyswietlanie
Found_result = Obj_Book->Find_Pharse(pharse);
if(Found_result.size()>0)
{
cout<<"\nFraza '"<<pharse<<"' zostala znaleziona.\nWyniki wyszukiwania ("<<Obj_Book->Instances<<" wynikow):\n"<<endl;
for(int i=0; i<columns; i++)
{
cout<<"<--Nr wiersza---Strona--> ";
}
cout<<endl;
for(int i=0; i<Found_result.size(); i++)
{
if(i%columns==0) cout<<"\n";
cout<<"["<<Found_result[i]<<"] | "<<Locate_Page(Obj_Book->Rows_on_page, Found_result[i])<<" ";
}
cout<<"\n"<<endl;
}