#include <iostream>
#include <cstdlib>
#include "Gra.h"
#include "Baza.h"
using namespace std;
const string NAZWA = "baza.txt";
const string SEPARATOR = ";";
//metoda szukająca kolejnych atrybutów gry podczas wczytania danych z pliku
int szukaj(std::string & tekst)
{
size_t znalezionaPozycja = tekst.find(";");
if(znalezionaPozycja == std::string::npos){
return -1;
} else {
return znalezionaPozycja;
}
}
int main()
{
ifstream plik(NAZWA); // Próbujemy otworzyć plik
//utworzenie obiektu bazy
Baza *baza = new Baza();
if(plik){
cout << "Baza otworzona poprawnie.";
string linia;
string w1, w2, w3;
int w4;
double w5;
int i=0;
//odczyt w petli, linia po linii wszystkich gier z bazy plikowej
//kazda gra w nowej linii, atrybuty gier oddzielane srednikiem
while(std::getline(plik, linia)){
string delimiter = SEPARATOR;
size_t pos = 0;
string token;
while ((pos = linia.find(delimiter)) != string::npos) {
token = linia.substr(0, pos);
switch(i){
case 0:
w1 = token;
break;
case 1:
w2 = token;
break;
case 2:
w3 = token;
break;
case 3:
w4 = atoi(token.c_str());
break;
case 4:
w5 = atof(token.c_str());
break;
}
linia.erase(0, pos + delimiter.length());
i++;
}
Gra *gra = new Gra(w1, w2, w3, w4, w5);
baza->dodajNaListe(*gra);//dodawanie na liste wczytanych gier
i=0;
}
//wyswietlenie menu
cout << "\n\nMENU\n\n";
cout << "0 - koniec pracy\n";
cout << "1 - dodawanie\n2 - usuwanie\n";
cout << "3 - wyszukiwanie\n4 - ilosc gier w bazie\n" << endl;
//deklaracja niezbednych zmiennych
string szukajTytulu;
int wybor=-1;
//nieskonczona petla (no chyba ze wpiszemy zero)
do {
cout << endl;
//jesli ktos wpisal zero to konczymy petle i dzialanie programu
if(wybor == 0) break;
string x1, x2, x3, x4, x5;
Gra *giera;
//sprawdzanie w switchu co ktos wpisal (1, 2, 3, 4)
switch(wybor){
case 1://dodawanie
cout << "Podaj tytul: ";
cin >> x1;
cout << "Podaj gatunek: ";
cin >> x2;
cout << "Podaj firme: ";
cin >> x3;
cout << "Podaj rok: ";
cin >> x4;
cout << "Podaj cene: ";
cin >> x5;
giera = new Gra(x1, x2, x3, atoi(x4.c_str()), atof(x5.c_str()));
baza->dodajNaListe(*giera);
baza->dodajDoPliku(*giera);
cout << "\nDodano!\n";
break;
case 2://usuwanie
baza->wyswietlWszystkie();
cout << "\nPodaj nr gry, ktora chcesz usunac: ";
int ktr;
cin >> ktr;
baza->usun(ktr);
break;
case 3://jesli ktos wpisal 3 to szukamy gry po nazwie w bazie
cout << "Podaj tytul szukanej gry: ";
std::getline(cin, szukajTytulu);
cout << "\nSzukam " << szukajTytulu;
baza->szukaj(szukajTytulu);
break;
case 4://pobranie ilosci gier w bazie
cout << baza->pobierzRozmiar() << endl;
break;
}
cout << "\nWpisz nr instrukcji, ktora chcesz wykonac: "; //zacheta do wpisania nr instrukcji
} while((cin>>wybor) != 0); //warunek stopu petli
} else {
cout << "Baza uszkodzona." << endl;
}
cout << "\n\nPRACA ZAKONCZONA\n\n";
return 0;
}
Wyskakuje mi taki błąd
no matching function for call to 'std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(const std::string&)'
co to może być?
dodanie znaczników <code class="cpp">
- @furious programming