Classe de leitura / gravação de c ++ de / para arquivo binário
Preciso escrever uma classe em um arquivo binário e, em seguida, preciso lê-lo novamente.
eu tenhoTriangle
eBinaryFile
classes e algumas outras classes. Não tenho certeza se estou escrevendo incorretamente ou lendo incorretamente. Ocorre um erro ao ler. Após a depuração, acho que obtém dados inadequados para minhas variáveis privadas. Ficarei muito feliz se alguém puder me dar alguns conselhos sobre como fazê-lo funcionar corretamente.
Eu não tinha certeza se deveria colar o código inteiro ou não, então darei um pequeno trecho de código. Por precaução, aqui está um link para download do meu código-fonte:
https://my.pcloud.com/publink/show?code=XZJ7CYZbsLWLglqV5p83csijcEUTFqqpM3k
Sou iniciante em programação e não falo inglês muito bem, portanto peço desculpas antecipadamente por meus erros.
class Point
{
private:
int x;
int y;
};
class Figure
{
private:
string name;
string type;
};
class Triangle: public Figure
{
private:
Point p1, p2, p3;
};
class BinaryFile
{
private:
string FileName;
fstream File;
public:
//...
void AddNewFigure(istream& stream)
{
File.open(this->FileName, ios::binary | ios::app);
if(!this->File)
{
cerr<<"File error <"<<this->FileName<<">\n";
exit(1);
}
Triangle fig;
fig.MakeNewFigure(stream);
File.write((char*)&fig, sizeof(Triangle));
File.close();
}
Triangle GetTriangle()
{
Triangle trig;
Point p;
string str(""); int x(0);
File.open(this->FileName, ios::binary | ios::in);
if(!this->File)
{
cerr<<"File error <"<<this->FileName<<">\n";
exit(1);
}
File.read((char*)&trig, sizeof(Triangle));
File.close();
return trig;
}
};