1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

como ler dados de um ficheiro para os atributos de uma classe?

Discussão em 'Programação' iniciada por nokiaboy, 10 de Dezembro de 2005. (Respostas: 1; Visualizações: 735)

  1. nokiaboy

    nokiaboy Power Member

    Tudo fixe?
    Alguem me pode dizer como passar os dados de um ficheiro ex: aluno XPTO;20315;porto...EOF
    para a classe aluno que tem os atributos: nome_aluno, num_mec e morada partindo do principio que o ficheiro tem varios alunos para que depois possa acrescentar, alterar, eliminar,ordenar, pesquisar e no final voltar a guardar no ficheiro. (c++)
    Cumps...
     
  2. sapropel

    sapropel Power Member

    ora bem, cada atributo têm um ponto e virgula a frente né?
    cada aluno tem quantos atributos? 3?

    uma ideia era fazeres uma função que sacava 3 atributos (ou seja um aluno) de cada vez, e guardava esses 3 atributos num vector de strings (ou algo do genero):

    Código:
    void GetStudent( std::vector <std::string> & array_students )
    {
    	std::ifstream in( "path_do_file.txt", std::ios::in );
    	std::string temp;
    
    	for( int i = 0; i < 3; i++ )
    	{
    		while( (char c = in.get()) != ';' )
    			temp += c;
    
    		array.push_back( temp );
    		temp = "";
    	}
    }    
    
    isso ta um pouco a trolha (foi escrito agora a pressa, nem foi testado) mas isso depois tu melhoras (conforme a abordagem que decidires). essa funçao nem verifica EOF.

    depois disso é só meter na classe:

    Código:
    int main( int argc, char *argv[] )
    {
    	(...)
    
    	Aluno aluno;
    	std::vector vector_estudantes;
    
    	GetStudent( vector_estudantes );
    
    	aluno.nome_aluno = vector_estudantes[0];
    	aluno.num_mec = vector_estudantes[1]; //aqui se for um int, tens de converter usando std::stringstream (para ficar mais c++ like).
    	aluno.morada = vector_estudantes[2];
    
    	(...)
    }
    
    e pronto, assim ha primeira vista, era assim que eu abordava o problema.
    boa sorte com isso.

    EDIT: so agora é que reparei que tb querias modificar, ordenar, apagar, etc, sendo assim ja abordava duma maneira diferente, guardava tudo na memoria (usando std::string e std::vector), mas depois era exactamente a mm coisa, so que em vez de ir estar a buscar ao ficheiro usando std::ifstream, ia direito a memoria (para o caso do GetStudent).
     
    Última edição: 10 de Dezembro de 2005

Partilhar esta Página