1

「Campus」という名前のクラスから派生したオブジェクトのリストがあります。これには、int と 2 つのリストの 2 つの文字列が含まれています。1 つは「Students」用、もう 1 つは「Teachers」用です。プログラムを閉じる前に、キャンパスを保存したいと思います。オブジェクト、そしてもちろんそれらのリストに含まれる「Student」および「Teachers」オブジェクトの場合、これらのデータを XML または JSON 形式でシリアライズし、結果をファイルに保存したいと考えています。

XMLまたはJSONまたは別のソリューションでライブラリ(ブーストほど重くない)を使用してシリアライゼーションを行う最速の方法を教えてください。JSONやXMLのシリアライズとなると、どうしたらいいのかわからない!編集:これは RapidJSON で実行可能ですか?

class Campus
{
private:
    std::string city;
    std::string region;
    int capacity;
    std::list<Student> students;
    std::list<Teacher> teachers;
}

class Student
{
private:
    int ID;
    std::string name;
    std::string surname;
}

class Teacher
{
protected:
    int ID;
    std::string name;
    std::string surname;
};
4

2 に答える 2

2

この C++ シリアル化ライブラリを使用できます: Pakal persist

#include "XmlWriter.h"


class Campus
{
private:
    std::string city;
    std::string region;
    int capacity;
    std::list<Student> students;
    std::list<Teacher> teachers;

public:

    void persist(Archive* archive)
    {
        archive->value("city",city);
        archive->value("region",region);
        archive->value("capacity",capacity);

        archive->value("Students","Student",students);
        archive->value("Teachers","Teacher",teachers);
    }

}

class Student
{
private:
    int ID;
    std::string name;
    std::string surname;

public:

    void persist(Archive* archive)
    {
        archive->value("ID",ID);
        archive->value("surname",surname);
        archive->value("name",name);        
    }

}

class Teacher
{
protected:
    int ID;
    std::string name;
    std::string surname;
public:

    void persist(Archive* archive)
    {
        archive->value("ID",ID);
        archive->value("surname",surname);
        archive->value("name",name);
    }
};

Campus c;

XmlWriter writer;
writer.write("campus.xml","Campus",c);
于 2015-11-18T21:42:16.630 に答える
0

残念ながら、C ++はリフレクションをサポートしていないため、パラメーター名を自動的に把握することはできません..しかし、この回答をチェックしてください。 /1715829

于 2015-05-08T22:19:24.410 に答える