Ayant un peu été déconnecté de Boost depuis 2 ans, est-ce que vous savez s'il existe une bibliothèque de lectrue/écriture de fichiers de configuration, enfin les fameux .ini qui se baladent un peu partout.
Et si non, vous passeriez par quoi ?
Ayant un peu été déconnecté de Boost depuis 2 ans, est-ce que vous savez s'il existe une bibliothèque de lectrue/écriture de fichiers de configuration, enfin les fameux .ini qui se baladent un peu partout.
Et si non, vous passeriez par quoi ?
Salut Matthieu
Je ne crois pas qu'il y ait une lib pour les fichiers de configuration.
Par contre, en construisant un parser avec un Spirit (un peu lourd p-ê ?) ou en utilisant comme il se doit Tokenizer/String algorithms, tu dois pouvoir avoir ce que tu veux assez facilement.
Par contre, y'a pas de tout cuit à ma connaissance dans Boost.
Ailleurs :
http://rudeserver.com/config/usage.html
http://libclaw.sourceforge.net/index-fr.html
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
C'est embêtant, ça
Enfin, merci, je vais voir ce que je peux faire![]()
Si si, avec boost::program option tu peux arriver à lire des fichiers type .ini
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
C'est récent ce feature ?
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Apparemment depuis la 1.32
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
J'utilise boost::program_option et ça gere très bien les fichiers de ce type effectivement. Ya aussi l'avantage de pouvoir potentiellement mixer avec des infos venant de la ligne de commande histoire de permettre de surcharger un paramettre de config de manière exceptionnelle au besoin.
La bibliothèque pour ça, c'est property tree, une petite bibliothèque de gestion d'arbres de propriétées.
Ça supporte l'ini, l'xml et d'autres.
La syntaxe est de type chemin: machin.truc.bidule cherchera l'élément bidule se trouvant dans truc se trouvant dans machin.
Cool ! Je vais voir ça. La partie XML m'intéressera aussi parce que j'ai maintenant aussi des séries de valeurs que je dois stocker dans des conteneurs.
Pas l'air d'être officiellement supportée![]()
Oui, c'est pas encore dans Boost.
Je viens de tenter de compiler un exemple simple de property tree, et j'ai une erreur avec le compilo intel dans detail/ptree_implementation.hpp, ligne 538 (type name is not allowed pour get_value<Type>) que je n'ai pas avce le compilo gcc![]()
Fais voir la ligne en question ?
D'un autre côté, elle n'est pas dans Boost donc rien ne garantit qu'elle soit cross-compiler.
ICC peut être plus strict sur certaines choses que laissent passer VC, gcc notamment. Ou alors il se plante en te sortant une erreur.
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Ca a l'air bien plus sournois, car il n'y a pas d'autre erreur que la ligne type name is not allowed machin chose.
Ici : https://svn.boost.org/svn/boost/sand...ementation.hpp ligne 538
Il me semble que c'est ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // Get value from data of child ptree template<class C, class K, class P, class D, class X> template<class Type> Type basic_ptree<C, K, P, D, X>::get(const path_type &path, const translator_type &x) const { return get_child(path).get_value<Type>(x); }
Partager