繁体   English   中英

将二进制文件用于复杂对象C ++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM