Welches Format/Bibliothek für Config-Dateien?



  • Ich möchte für mein Programm bestimmte Einstellungen speichern. Simple Ini-Dateien reichen nicht aus, weil es kann auch Listen geben.

    Gibt es da Empfehlungen, welche Formate in C++ beliebt sind und mit welchen Bibliotheken diese eingelesen und geschrieben werden können?



  • Man kann auch Listen in ini Dateien speichern, auch wenns dann vielleicht nicht ganz so elegant ausschaut. Ansonsten kannst du alles mögliche nehmen, was es so gibt. Xml, Json, Yaml, oder irgendein (eigenes) Binärformat. Ich würde bei Config Dateien aber tatsächlich am ehesten etwas ini-ähnliches nehmen, wenn es halbwegs passt. Das kann man von Hand einfach am einfachsten editieren.



  • Hmm, köntest du mal zeigen wie das mit ini möglich wäre?

    class SubObjekt {
        int Data1;
        int Data2;
    };
    class Objekt {
        string Name;
        int Einstellung;
        vector<SubObject> Subobjekte;
    };
    class Profil {
        std::string Name;
        vector<Objekt> Daten;
    };
    vector<Profil> // das möchte ich abspeichern
    

    Es wäre schon schön, wenn sich diese Daten leicht von Hand editieren ließen.

    Soll ich den Parser dafür dann selber schreiben oder kannst du Bibliotheken empfehlen?



  • Sowas schaut natürlich schon eher nach etwas, was man als XML speichern könnte. Kommt drauf an, ob das die Regel oder die Ausnahme ist. Natürlich kann man Config Formate auch mischen, wenn du für einzelne Objekte doch Xml oder sowas verwenden willst. Notfalls könnte man das auch in ein ini Format quetschen. Vielleicht irgendwie so:

    profiles.ini:

    [ProfileName]
    ObjectList=object1,object2

    [object1]
    Einstellung=1
    Name=Wenn eindeutig, reicht die Section
    Subobjekte=1,2,3,4
    oder
    Subobjekte=1,2;3,4
    oder
    Subobjekte=subobjekt1,subobjekt2 und dann eigene sections [subobjekt1] usw...

    Oder man könnte statt kommaseparierter Listen auch sowas machen

    [ProfileName]
    Objekt1=object1
    Object2=object2

    Obs dann unbedingt besser ist als XML weiß ich nicht. Wir verwenden sowas auch in unserer Software und die Consultants und Kunden können das editieren. Das passt dann aber zu den anderen Configs und so komplexe Objekte sind dann eher die Ausnahme.

    Keine Ahnung, obs schon fertige Bibliotheken gibt, wahrscheinlich schon, ziemlich sicher sogar. Wir haben das selber geschrieben, aber wir haben die Software vor 20 Jahren angefangen, damals gabs noch nicht so viel.



  • Serializer schrieb:

    Hmm, köntest du mal zeigen wie das mit ini möglich wäre?
    ...
    Soll ich den Parser dafür dann selber schreiben oder kannst du Bibliotheken empfehlen?

    Es gab hier im Forum schon ein paar Ansätze z.B. hier oder hier - ansonsten nach "ini" im Forum suchen.



  • Boost.PropertyTree


Anmelden zum Antworten