[英]using binary file for complex object C++
我有一个名为widget的虚拟基类,它具有一些派生类。 我写了代码将其打印到屏幕上:
std::ostream& operator << (std::ostream& os, const Base& base) //output
{
os << . . . . //some orders for priting the base members
Derived1* l = dynamic_cast<Derived1*>(base);
Derived2* d = dynamic_cast<Derived2*>(base);
Derived3* r = dynamic_cast<Derived2*>(base);
if (c != NULL)
{
os << ... / / some ostream orders
}
else if (l != NULL)
{
os << ... / / some ostream orders
}
else if (r != NULL)
{
// some orders
}
return os;
}
现在,我想用它来写\\从二进制文件读取。 有蚂蚁选项吗? 一些成员-动态分配(字符串,向量,指针向量等)。 谢谢!
这看起来像是一个作业问题,因此我不会给出任何代码,但会尝试为您指明正确的方向。
C字符串如何存储在数组中? 您如何知道数组的结尾在哪里? -考虑一下。 在C字符串中,有一个终止字符( '/0'
)表示字符串的结尾。 也许您可以在每个数据位之后写一个终止字符? 在您的情况下,也许0xFF
类的0
可能为0
有效数据。
或者,向您的文件中添加一些元数据。 例如,对于每个向量,在其前面加上有关每个成员多少字节以及多少成员的信息:
例如
int = 5 -> 0x01 0x02 0x05 //one, two byte value, value = 5.
int[3] = {5,6,7} -> 0x03 0x02 0x05 0x06 0x07 //three, two byte values, values = 5. 6 and 7.
然后,您的解析程序只需要确保它每次都读取正确数量的数据即可。
要添加不同的数据类型,请考虑要存储的所有类型的枚举。 将关联的值与数据一起存储。 这将允许您有效地指定字符串等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.