für ein anstehendes größeres Projekt bin ich gerade am Vorarbeit leisten und etwas zu planen.
Habe dann vorher eine Klasse zusammengehakt, welche ganz simple *.cfg Dateien bearbeitet (lesen und schreiben). Ein Aspekt dabei war, dass mehrere Files von verschiedenen Threads gelesen bzw. geschrieben werden können.
Jede Instanz der Klasse besitzt quasi einen Snapshot der Datei, wird diese zwischenzeitlich geändert, kann man manuell via reload() darauf reagieren und die Datei erneut parsen. Ein Mutex sorgt dafür, dass der Zugriff auf die anderen sauber verläuft und es keine Komplikationen in der map gibt.
Die *.cfg files sind dabei ganz einfach aufgebaut:
key=value.
Keine Leerzeichen, keine Kommentare, kein Nichts
Wie gesagt hab ich es in totaler Übermüdung geschrieben und vielleicht kann ja doch jemand was damit anfangen oder mich auf einen groben Fehler aufmerksam machen.
2 Sachen stehen aber noch an: case-insensitivity und besserer Umgang mit Leerzeichen.
Header:

Impl:

Beispiel
Code:
#include <iostream>
#include "CfgParser.h"
int main()
{
ConfigParser parser("foobar.cfg");
parser.write("name", "foo");
parser.write("age", 1337);
parser.write("PI", 3.14);
try
{
float pi = parser.read<float>("PI");
std::string tel = parser.read<std::string>("telephone");
}
catch(NotExistingValueException)
{
std::cerr << "value not found" << std::endl;
return 1;
}
return 0;
}






