Witam mam problem z wyszukiwaniem tekstu w plikach prosze o pomoc i nakierowanie na błąd.
//baza danych na klasach
// z uzyciem wektorów i stringów
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <windows.h>
using namespace std;
class pliki // deklaracja klasy ' pliki '
{
private: //private - wszystkie elementy klasy bazowej zmieniają się w prywatne.
int i; //deklaracja zmiennej i
char nazwa_pliku[10][40]; // nazwa pliku w tablicy
public: //public - np. zmienne lub funkcje mają taką widoczność jak w klasie bazowej.
short int wyszukiwanie(); //deklaracja wyszukiwania i wczytywania z listy
void wczytywanie(); //wczytywanie i lista typu void sa publiczne
void lista();
pliki()
{
i=0; //inkremantacja ' i '
}
};
class interfejs // deklaracja klasy interfejs
{
private:
char wybor; //deklaracja zmiennych wybor , wybierz opcje
void wybierz_opcje();
public: //wyswietl menu
void wyswietl_menu(); //wyswietlanie menu typu void jest publiczne
pliki dokumenty;
};
void interfejs::wyswietl_menu() //interfejs przypisany do wyswietl menu
{
do //menu
{
cout << "\n\n\t\t\t\t >>>MENU<<< \n\t\t\t\t";
cout << endl;
cout << " 1.Szukaj slowa \n" ;
cout << " 2.Wczytaj plik \n" ;
cout << " 3.Wczytaj liste plikow \n";
cout << " 0.Wyjscie \n\n" ;
cout << "Co chcesz zrobic: " ;
cin >> wybor;
Sleep(1000); //opóźnienie wypisywanego tekstu
wybierz_opcje(); //pokazuje wybraną opcję
}
while (wybor!='0'); //wybór
}
void interfejs::wybierz_opcje() //wybieranie opcji inferfejsu == menu
{
switch(wybor) //switch menu
{
case '1': //case '1' wyszukuje słów
cout << endl;
Sleep(1000); //opóźnienie
dokumenty.wyszukiwanie();
break;
case '2': //case '2' wczytuje pliki
cout << endl;
cout << "\t\t\tDokument wczytywania...\n";
Sleep(1000); //opóźnienie
dokumenty.wczytywanie();
break;
case '3': //case '3' pokazuje wczytane pliki
cout << endl;
cout << "\t\t\tLista dokumentow...\n";
Sleep(1000); //opóźnienie
dokumenty.lista();
break;
case '0': //case '0' konczy prace programu
cout << endl;
cout << "\t\t\tWybrales numer 0...!\n";
Sleep(1000); //opóźnienie
cout << "\t\t\tKoncze program...!\n";
break;
default: //default informuje o złym wybranym klawiszu przez użytkownika
cout << endl;
cout << "\t\t\tWybierz poprawny numer...!\n";
Sleep(1000); //opóźnienie
break;
}
}
short int pliki::wyszukiwanie() //pliki przypisane do wyszukiwanie
{
if (i<1) //jesli i < 1
{
cout << "\t\t\tNie wczytano zadnych plikow!\n"; // oznacza to , że zadne pliki nie zostały wczytane
return 0;
}
ifstream znajdz; //deklaracja znadz typu ifstream
string szukane_slowo; //deklaracja zmiennej typu string szukane_slowo
cout << "\t\t\tPodaj szukane slowo: ";
cin >> szukane_slowo;
for (int j=1; j<=i; j++) // i musi = 1 ; j mniejsze lub równe i ; j inkrementowane
{
znajdz.open(nazwa_pliku[j-1]);
size_t licznik = 0; //size_t przypisuje licznikowi długosc 0
while(!znajdz.eof() ) //szukanie po lini z nazwy pliku , warunek do póki plik skonczony
{ //znajdz zostało wczesniej == do nazwa_pliku
string linia;
getline(znajdz, linia);
vector<string> slowa;
for(size_t n = 0; n < slowa.size(); n++)
if (slowa[n] == szukane_slowo)
licznik++;
}
znajdz.close();
cout<<"Ilosc slow "<<szukane_slowo<<"' w pliku " << nazwa_pliku[j-1] <<": "<<licznik<<endl;
}
return 0;
}
void pliki::wczytywanie() //funkcja void która wczyta nazwe pliku
{
cout << "\t\t\tPodaj nazwe pliku do wczytania: ";
cin >> nazwa_pliku[i]; //wprowadzenie nazwy pliku
fstream plik; //deklaracja pliku
plik.open(nazwa_pliku[i]); //otwieranie pliku
if (plik.good()==true) //jesli plik jest dobry , wypisz --
{
cout << "\t\t\tUzyskano dostep do pliku " << nazwa_pliku[i] << endl; // --
i++;
}
else //jesli pliku nie mozna znaleźć , wypisz --
cout << "\tNie moge odtworzyc pliku. Plik nie istnieje lub jest uszkodzony.\n"; //--
}
void pliki::lista() //zmienna pliki typu void przypisana do lista
{
if (i<1) //jesli i < 1
{
cout << "\t\t\tNie wczytano zadnych plikow!\n"; // wyswietli komunikat
}
else //jesli i > 1
{
cout << "\t\t\tW bazie znajduja sie: "; //wyswietli komunikat
for (int j=0; j<i; j++) // j=0 ; j < 1 ; inkrementacja j ++ , j zwiekszane z kazdym kolejnym plikiem
cout << nazwa_pliku[j] << ", "; // wypisane zostaną nazwy plików [j]
cout << endl;
}
}
int main()
{
interfejs menu;
menu.wyswietl_menu();
return 0;
}