1

所以我对单个对象进行了序列化,但我遇到了几个问题。这是代码:

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    class MyTest
    {
    private:
        string test;
    public:
        MyTest():test(""){};
        void setTest(const string& test) {this->test = test;};
        string getTest() const {return this->test;};
    };
    void writeToFile(const MyTest& m)
    {
        ofstream ofs("data.mbp", ios::app|ios::binary);
        ofs.clear();
        ofs.write((char *)&m, sizeof(m));
        ofs.flush();
        ofs.close();
        return;
    };
    MyTest& readTest(MyTest& m,int num)
    {
        ifstream ifs;
        ifs.open("data.mbp", ios::in|ios::binary);
        for ( int i = 1 ; i <= num ; i++)
            ifs.read((char *)&m, sizeof(m));
        return m;
    }

    int main(int argc,char* argv[])
    {
        MyTest m,t;
        m.setTest("Hello");
        writeToFile(m);
        t.setTest("World");
        writeToFile(t);
        t = readTest(t,1);
        cout << t.getTest() << endl;

        m = readTest(m,2);
        cout << m.getTest() << endl;


        return 0;
    }

问题是我不知道如何在二进制文件中写入两个或更多对象,然后我如何读取它们。有人知道吗?

提前致谢。

4

2 回答 2

5

我建议您使用 Boost - Serialization 在 C++ 中序列化对象:http: //www.boost.org/libs/serialization/

于 2012-07-29T19:30:40.610 回答
2

有很多不同的方法可以做到这一点。您需要先选择文件格式。首先考虑一下 XML。复杂数据结构的序列化最好基于一些现有的库,而不是自己从头开始编写。在 Inet 上搜索此类库。

于 2012-07-29T19:32:05.760 回答