Caricamento valori in vector

di il
11 risposte

Caricamento valori in vector

Ciao! questa volta ho un problema con il caricamento di nuovi valori nel vettore _monster_f. Se eseguo in debug mi spunta che sono inseriti i valori giusti, ma quando provo a stampare il contenuto del vettore fuori dalla funzione, mi stampa solo il valore giusto dei primi due campi, mentre per gli altri campi stampa i valori di inizializzazione. Qualcuno mi sa aiutare?


Monster:: Monster(string line_entry){
stringstream ss(line_entry);

ss>> _ID>> _name>> _PS>> _PA>> _PD>> _speed;
}


void Fighter:: read_file_monsters(){
 _f_monsters.openFile("mostri.txt");

 while (! _f_monsters.testEof() ){
     string line= _f_monsters.readLine();
    Monster new_monster ( line );
    _monsters_f.push_back(new_monster);
 }
 _f_monsters.closeFile();
}

11 Risposte

  • Re: Caricamento valori in vector

    Non ho capito il problema ...

    Spiega indicando

    1) il contenuto del file

    2) il contenuto finale di _monsters_f
  • Re: Caricamento valori in vector

    oregon ha scritto:


    Non ho capito il problema ...

    Spiega indicando

    1) il contenuto del file

    2) il contenuto finale di _monsters_f

    ogni riga del file è formattata così:
    ID(int) name (string) PS(int) PA(int) PD(int) speed(int)

    durante il debug della funzione read_file_monsters, mi spunta che a _monster_f vengono dati tutti i campi delle righe del file ma ,quando provo a stampare _monster_f , stampa i valori giusti solo di ID e name , mentre per gli altri campi stampa 0 (che è il valore con cui li avevo inizializzati)

    ad esempio: 3 lupo 0 0 0 0
  • Re: Caricamento valori in vector

    Ma il codice della visualizzazione qual è?
  • Re: Caricamento valori in vector

    oregon ha scritto:


    Ma il codice della visualizzazione qual è?
    vuoi dire il main?
    Fighter f;
        f.read_file_monsters();
        f.report();
  • Re: Caricamento valori in vector

    No ... il codice con cui visualizzi ... forse il metodo report?
  • Re: Caricamento valori in vector

    oregon ha scritto:


    No ... il codice con cui visualizzi ... forse il metodo report?
    void Fighter::report(){
    
    for(int i=0; i<_monsters_f.size(); ++i){
            cout<<_monsters_f.at(i).ID()<<" "<<_monsters_f.at(i).name()<<" "<< _monsters_f.at(i).PS()<<" "<<_monsters_f.at(i).PA()<<" "<<_monsters_f.at(i).PD()<<" "<<_monsters_f.at(i).speed()<<endl;
        }
    }
    
  • Re: Caricamento valori in vector

    La classe Monster ha un costruttore di copia?
  • Re: Caricamento valori in vector

    shodan ha scritto:


    La classe Monster ha un costruttore di copia?
    si
    Monster::Monster(const Monster & to_copy)
    {
        this->_ID=to_copy.ID();
        this->_name=to_copy.name();
        this->_PS=to_copy.PS();
        this->_PA=to_copy.PA();
        this->_PD=to_copy.PD();
        this->_speed=to_copy.speed();
    }
    
  • Re: Caricamento valori in vector

    Hai controllato che nel costruttore di Monster le variabili siano effettivamente quelle che ti aspetti?
    Perché l'operatore >> di stringstream si ferma al primo spazio che trova in una stringa, per cui se hai un monster tipo "lupo cattivo", lo stream estrae solo "lupo" e manda in palla il resto.

    Per il resto le funzioni sono sostanzalmente corrette.
    N.B. Che compilatore usi?
  • Re: Caricamento valori in vector

    shodan ha scritto:


    Hai controllato che nel costruttore di Monster le variabili siano effettivamente quelle che ti aspetti?
    Perché l'operatore >> di stringstream si ferma al primo spazio che trova in una stringa, per cui se hai un monster tipo "lupo cattivo", lo stream estrae solo "lupo" e manda in palla il resto.

    Per il resto le funzioni sono sostanzalmente corrette.
    N.B. Che compilatore usi?


    si, nel costruttore ci sono tutte le variabili..
    Comunque Code blocks
  • Re: Caricamento valori in vector

    shodan ha scritto:


    Hai controllato che nel costruttore di Monster le variabili siano effettivamente quelle che ti aspetti?
    Perché l'operatore >> di stringstream si ferma al primo spazio che trova in una stringa, per cui se hai un monster tipo "lupo cattivo", lo stream estrae solo "lupo" e manda in palla il resto.

    Per il resto le funzioni sono sostanzalmente corrette.
    N.B. Che compilatore usi?


    si, nel costruttore ci sono tutte le variabili..
    Comunque Code blocks
Devi accedere o registrarti per scrivere nel forum
11 risposte