我需要将一个类写入二进制文件,然后我需要将其读回。
我有 Triangle
和 BinaryFile
类,以及其他一些类。我不确定我是写错了还是读错了。读取时出现错误。调试后,我认为它为我的私有变量获取了不合适的数据。如果有人可以就如何使其正常工作给我一些建议,我将非常高兴。
我不确定是否应该粘贴整个代码,所以我会给你一小段代码。以防万一,这是我的源代码的下载链接:
https://my.pcloud.com/publink/show?code=XZJ7CYZbsLWLglqV5p83csijcEUTFqqpM3k
我是编程新手,英语说得不是很好,所以我提前为我的错误道歉。
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;
}
};
原文由 Nikolay Tashev 发布,翻译遵循 CC BY-SA 4.0 许可协议
答案取决于您这样做是为了了解文件的工作原理,还是保存到文件只是偶然的,您并不关心它是如何工作的。
如果您只是想保存和恢复这些东西并且您不在乎它是如何工作的,那么请使用第三方库。有很多很多。
如果你想学习如何读写文件,那么你需要创建自己的读写函数。我制作了一个示例程序来解释它是如何工作的: