Ciao a tutti.
Sto scrivendo un programma dove devo leggere una specifica riga di un file (formattato) .
Ogni riga del file è così formattata: int_string_int .
Per accedere al file utilizzo un accesso diretto utilizzando il primo int del file come indice di riga.
Una volta letta la riga devo prendere i vari "campi" che la compongono e inserirli in delle variabili private di una classe. Il mio problema è proprio quest'ultimo. Vi posto il codice sperando di riuscire a farmi capire un po' meglio.
class Giocatore
{
/*Questa è la classe di in cui sono presenti le variabili che devo settare con i
valori dei vari "campi" presenti nelle righe del file */
private:
int account;
string nome;
int punteggio;
public:
void setAccount(int);
void setNome(string);
void setPunt(int);
};
//////////FileManaging.h/////////////
//Questa è la classe che utilizzo per elaborare il file
class FileManaging
{
private:
ifstream inFile;
Giocatore player;
public:
Giocatore readFile(int locazione ) /*locazione è l'indice di riga (account) che fornisco alla
funzione per andare a leggere tale riga*/
};
/////////////FileManaging.cpp////////////
Giocatore FileManaging::readFile(int location)
{
inFile.seekg(location * sizeof(Giocatore));
inFile.read(reinterpret_cast< char * >(&player), sizeof(Giocatore));
return player;
}
Questo è un esempio della formattazione del file che devo leggere
1 Pippo 10
2 Topolino 34
3 Ciccio 6
4 pino 6
ecc...
Premetto che ho volutamente tralasciato altre funzioni e variabili, tipo per l'apertura del file, volutamente, giusto per non inserire parti di codice che non interessano al caso in questione.
Allora, con la funzione seekg mi porto alla riga voluta (giusto?) e poi con read leggo la riga corrispondente a location. Quindi nella variabile player (di tipo giocatore), dovrebbe esserci memorizzata la riga(?). Il mio problema è che non so come "spezzettare" i vari campi della riga di player che tramite le funzioni setAccount ecc (definite nella classe Giocatore) dovrò andare ad inserire nelle variabli account, nome, punteggio della classe Giocatore. Molto probabilmente il codice che ho scritto e mezzo sbagliato . Potreste darmi una mano?