Question

Je suis en train d'utiliser les noms de fichiers comme la clé dans boost :: PropertyTree

Cependant, le '' caractère dans un nom de fichier tel que « exemple.txt » provoque une couche supplémentaire à ajouter dans l'arborescence de la propriété. La solution la plus évidente serait de remplacer « » avec un autre personnage, mais il y a probablement une meilleure façon de faire, comme avec un caractère d'échappement.

Dans l'exemple suivant, la valeur 10 sera mis dans le nœud « txt », un enfant de « exemple ». , Je veux plutôt que la valeur 10 à être stocké dans le noeud « exemple.txt ».

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

Comment puis-je utiliser le nom de fichier complet pour un seul nœud?

Merci d'avance pour votre aide!

Était-ce utile?

La solution 2

Le problème était que la documentation était pas à jour. Un objet de type de chemin doit être créé comme suit, avec un autre personnage qui est valide pour les chemins de fichiers spécifiés comme séparateur comme suit:

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

J'ai trouvé un chemin à la solution de la liste de diffusion de boost au gmane.comp.lib.boost.devel newsgroup posté par Philippe Vaucher.

Autres conseils

Il suffit d'insérer l'arbre explicitement:

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

La méthode put est simplement là pour des raisons pratiques, ce qui est pourquoi il analyse automatiquement . comme une couche supplémentaire. La construction du value_type explicitement comme je l'ai montré ci-dessus évite ce problème.

Une autre façon de résoudre le problème est d'utiliser un argument supplémentaire dans put et get, qui change délimiteur.

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

Pour mémoire, je ne l'ai jamais utilisé cette classe avant dans ma vie. Je suis toutes ces informations dès la page que vous lié à; )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top