[Dúvida] Arquivos binários (C++)

3 respostas
Nicolas_Fernandes

Olá, pessoal do GUJ!

Estava mexendo com arquivos em C++, e me deparei com o seguinte problema:

Criei um template para manipular Listas. A classe se chama List.h.

Beleza, fui lá eu gravar uma lista de Clientes, por exemplo, num arquivo binário.
Fiz dessa maneira:

ofstream ofs;

if (!ofs.is_open())
   ofs.open("meuarquivo.bin", ios_base::in | ios_base::binary);

ofs.write((unsigned char *)&clientes, sizeof(List<Cliente>));
ofs.flush();
ofs.close();

Ao que tudo indica, está gravando, certinho.
O problema é na hora da leitura:

ifstream ifs;
List<Cliente> clientes;

if (!ifs.is_open())
   ifs.open("meuarquivo.bin", ios_base::out | ios_base::binary | ios_base::app);

ifs.read((unsigned char *)&clientes, sizeof(List<Cliente>));
ifs.flush();
ifs.close();

return clientes;

Não lê nada! :S

Alguma idéia do que possa ser?

Desde já, grato pela ajuda!

[]'s

3 Respostas

ViniGodoy

Não entendi. Se você está usando C++, porque criou um template para fazer listas, se a biblioteca padrão já tem uma classe de Listas?

Use o std::vector.

Note também que o tamanho do sizeof( Lista<Cliente> ) não inclui os elementos que estão dentro da lista.

Leonardo_Gloria


Não entendi. Se você está usando C++, porque criou um template para fazer listas, se a biblioteca padrão já tem uma classe de Listas?

Use o std::vector.

Pois é, tem uma infinidade de templates ja prontos, dá uma conferida na STL.

Deque é bem legal pra implemementar listas.

[]s!

Nicolas_Fernandes

Grande Vini!

Poxa, obrigado… Estava com dúvida nesse lance da List!

Vou testar, e mando um reply aqui!

[]'s

Criado 29 de setembro de 2009
Ultima resposta 29 de set. de 2009
Respostas 3
Participantes 3