Zlicza mi ilość wystąpień frazy, a następnie zwraca wartość.
int Szukaj( string & tekst, string szukanaFraza )
{
size_t znalezionaPozycja = tekst.find( szukanaFraza );
long int i = 0;
do
{
znalezionaPozycja = tekst.find(szukanaFraza, znalezionaPozycja + szukanaFraza.size() );
size_t znalezionaPozycja2 = tekst.find( szukanaFraza );
if ( znalezionaPozycja2 != string::npos)
i++;
} while( znalezionaPozycja != string::npos );
return i;
}
Oczywiście powyższa funkcja jest jeszcze poprzedzoną funkcją, która przypisuje odpowiednią kolejno linijkę z pliku do tablicy i zwraca string.
string Odczyt(int a)
{
string wiersz;
ifstream plik;
plik.open ( "plik.txt" );
string tablica[ilosc_wierszy()];
int i = 0;
while ( !plik.eof() || i <= a )
{
getline( plik, wiersz);
tablica[i] = wiersz;
i++;
}
plik.close();
return tablica[a-1];
}
Mam przeczucie, że pierwszy kod działa najwolniej bo mam funkcję, która sprawdza mi ilość linijek w pliku i wykonuje swoje zadanie poniżej sekundy.
Dałoby się jakoś pominąć tablicę ? Bo chyba cały problem polega na sprawdzeniu x tablic co może być powolnym procesem...
(Oczywiście zastosowałem trick bo wiem, że w moim pliku szukana wartość jest pod koniec dlatego zaczynam od końca, gdybym miał wyszukiwać frazy od początku skrypt wykonywałby mi się 60sek.)
PS: Dopiero uczę się programować...