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;
    }

問題は、バイナリファイルに2つ以上のオブジェクトを書き込む方法がわからず、その後、どのようにそれらを読み取ることができるかということです。誰か知っていますか?

前もって感謝します。

4

2 に答える 2

5

C ++でオブジェクトをシリアル化するには、Boost-Serializationを使用することをお勧めします:http ://www.boost.org/libs/serialization/

于 2012-07-29T19:30:40.610 に答える
2

それを行うには多くの異なる方法があります。最初にファイル形式を選択する必要があります。XMLについて直接考えてください。複雑なデータ構造のシリアル化は、最初から作成するよりも、既存のライブラリに基づいて行う方が適切です。Inetでそのようなライブラリを検索してください。

于 2012-07-29T19:32:05.760 に答える