///==================================================================
/// Fájlbeolvasást gyakorló feladatok
/// Verzió: 1.0
///     Az itt szereplő megoldások kezdetlegesek, aki komolyabb
///     megértésre törekszik az nézzen meg egy későbbi megoldást is
/// Ha kérdés merül fel írjatok emailt, vagy facebookon!
/// Módli Hunor - mhuni95@gmail.com
///==================================================================

#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>

using namespace std;

/**     Adott egy file (filmek.csv), melynek a tartalma, vesszőkkel elválsaztva:
 *      Filmcím, Kategória, Játékidő(percben), év, főszereplőt játszó színész, értékelés
 *      Pl.: The Shawshank Redemption,Drama,142,1994,Tim Robbins,9.2
 *
 *      Olvassuk be a fájlt!
 */

struct Film {           /// Megírjuk a rekordunkat a megadott adatoknak megfelelően.
    string cim,
           kategoria;
    int jatekido,
        ev;
    string foszereplo;
    float ertekeles;
};

int main() {

    vector<Film>osszesFilm; /// <--ebbe olvassuk bele az adatokat

    ifstream file("filmek.csv");                    /// Megnyitjuk a fájlt,
    if (!file.good()) {                             /// majd leelenőrizzük
        cout << "Hiba a beolvasaskor!" << endl;     /// hogy sikerült-e megnyitni.
        return 0;
    }
    string kuka;
    getline(file,kuka);

/// 1. féle megoldás: getline-stringstream favágás :)
///                     Előnye: ha egyszer megjegyzed akkor biztos hogy mindig működik.
///                     Hátránya: nagyon ronda, de ez bevprog1-en senkit sem zavar :)
/*
    Film filmem;
    string seged;
    stringstream SS;
    while(getline(file,filmem.cim,',')) {
        getline(file,filmem.kategoria,',');
        getline(file,seged,',');
        SS << seged;
        SS >> filmem.jatekido;
        SS.clear();
        getline(file,seged,',');
        SS << seged;
        SS >> filmem.ev;
        SS.clear();
        getline(file,filmem.foszereplo,',');
        getline(file,seged);
        SS << seged;
        SS >> filmem.ertekeles;
        SS.clear();
        osszesFilm.push_back(filmem);
    }
    */
/// 2. féle megoldás: getline, és >> operátor vegyesen
///                     Előnye: jóval szebb megoldás
///                     Hátránya: bele lehet kavarodni jobban mint az előzőbe.
/*
    Film filmem;
    char c;
    while (getline(file,filmem.cim,',')) {
        getline(file,filmem.kategoria,',');
        file >> filmem.jatekido >> c >> filmem.ev >> c;
        getline(file,filmem.foszereplo,',');
        file >> filmem.ertekeles;
        osszesFilm.push_back(filmem);
        getline(file,kuka);             /// Ez azért kell, mert még nem az új sorban vagyunk, hanem az "endline) karakter előtt, ezzel beolvassuk azt is.
    }
*/
/// Ellenőrzésképp irassuk ki a vektort:

    for (unsigned int i=0;i<osszesFilm.size();i++) {
        cout << f.cim << ", " << f.kategoria << ", " << f.jatekido << ", " << f.ev << ", " << f.foszereplo << ", " << f.ertekeles << endl;
    }
    return 0;
}
