Frage

Ich versuche, Dateinamen als Schlüssel zu verwenden, in boost :: PropertyTree

Allerdings ist die '' Zeichen in einem Dateinamen wie „example.txt“ bewirkt eine zusätzliche Schicht innerhalb des Eigenschaftsbaum hinzugefügt werden. Die naheliegendste Lösung wäre, zu ersetzen ‚‘ mit einem anderen Charakter, aber es ist wahrscheinlich ein besserer Weg, dies zu tun, wie zum Beispiel mit einem Escape-Zeichen.

Im folgenden Beispiel wird der Wert 10 wird im Knoten ‚txt‘ gesetzt werden, ein Kind von ‚Beispiel‘. Stattdessen möchte ich die 10-Wert im Knoten ‚example.txt‘ gespeichert werden.

ptree pt;
pt.put("example.txt", 10);

Wie kann ich die vollständigen Dateinamen für einen einzelnen Knoten verwenden?

Vielen Dank im Voraus für Ihre Hilfe!

War es hilfreich?

Lösung 2

Das Problem war, dass die Dokumentation veraltet war. Ein Pfad Typ Objekt muss erstellt werden wie folgt, mit einem anderen Zeichen, die für die Dateipfade angegeben als Trennzeichen ungültig ist wie folgt:

pt.put(boost::property_tree::ptree::path_type("example.txt", '|'), 10);

fand ich einen Weg zur Lösung von der Boost-Mailing-Liste in der Newsgroup gmane.comp.lib.boost.devel von Philippe Vaucher geschrieben.

Andere Tipps

Just Einsatz der Baum explizit:

pt.push_back(ptree::value_type("example.txt", ptree(10)));

Die put Methode ist einfach da für die Bequemlichkeit, weshalb es parst automatisch . als zusätzliche Schicht. die value_type Constructing ausdrücklich, wie ich oben vermeidet dieses Problem gezeigt haben.

Eine andere Möglichkeit, das Problem zu lösen, ist ein zusätzliches Argument in put und get zu verwenden, die die delimeter ändern.

pt.put('/', "example.txt", "10");
pt.get<string>('/', "example.txt");

Für das Protokoll habe ich nie benutzt diese Klasse zuvor in meinem Leben. Ich habe all diese Informationen direkt von der Seite, die Sie verknüpfen; )

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top