Prawdziwe wyzwanie! - szukajka i find()

0

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;
					
				}
0

może zamiast szukać w wielkim stringu, podziel go na linie, np. jako vector<string>

0

Jest podzielony na wersy (linie).

this->BOOK[i] // jedna linia jako wektor

Jeżeli wpisuję jeden wyraz to znajduje elegancko i wypisuje wiersz a gdy wpiszę coś ze spacją to progs szaleje, w pętli wyświetla warunek dla menu==0 natomiast opcja wyszukiwania to menu=2 więc dziwne że przeskakuje tego if'a gdzie sprawdza jaką wartość ma menu i mimo że menu==2 to wykonuje w pętli warunek dla menu==0

1 użytkowników online, w tym zalogowanych: 0, gości: 1