Accueil > > > (LIB)CONFIGINIPARSER
(LIB)CONFIGINIPARSER
Information sur la source
Description
Classe C++ pour lire, éditer, et sauver les fichiers de configuration de type .INI . bool open(const string fichier="config.ini"); bool save(const string fichier="config.ini"); entry getEntry(const string& section,const string& variable); string getValeur(const string& section, const string& variable); //old way template<class T> bool getValeur(const string& section, const string& variable, T& destination); string getComment(const string& section, const string& variable); bool addEntry(const string& section, const entry& e); //a eviter bool addComment(const string& section, const string& commentaire); //en debut de section bool setComment(const string& section, const string& variable, const string& commentaire); //sur une ligne template<class T> bool setValeur(const string& section, const string& variable , const T& valeur); template<class T> bool addValeur (const string& section, const string& variable , const T& valeur); //forme generique bool addSection(const string& section, const unsigned int& position); bool eraseEntry(const string& section, const string& variable); bool eraseSection(const string& section);
Source
- #include <iostream>
- #include "ConfigIniParser.hpp" //classe ConfigIniParser, namespace cip
-
-
- using namespace std;
-
- int main()
- {
- /** OUVERTURE */
- //Creation de l'objet config avec ouvertur automatique du fichier
- cip::ConfigIniParser config("TEST.INI");
-
-
- /**LECTURE */
- //Recuperation d'une valeur 'vitesse' dans la section 'PARAMETRE' !case sensitive!
- if(config.getValeur("PARAMETRES","vitesse")!=cip::ERREUR){
- cout<<"Vitesse (String)="<<config.getValeur("PARAMETRES","vitesse")<<" ; ";
- }
- cout<<"Commentaire de fin de ligne : "<<config.getComment("PARAMETRES", "vitesse")<<endl;
-
- //Recuperation d'une valeur 'vitesse' dans la section 'PARAMETRE' !case sensitive!
- //Methode permettant de demander un 'format' de retour -> true si ok
- int vitesse_int;
- if(config.getValeur("PARAMETRES","vitesse",vitesse_int)){
- cout<<"Vitesse (int)="<<vitesse_int<<endl;
- }else{
- cout<<"Impossible de convertir 'vitesse' en int"<<endl;
- }
- double vitesse_dbl;
- if(config.getValeur("PARAMETRES","vitesse",vitesse_dbl)){
- cout<<"Vitesse (double)="<<vitesse_dbl<<endl;
- }else{
- cout<<"Impossible de convertir 'vitesse' en double"<<endl;
- }
-
-
- /** ECRITURE */
- //ajout d'une [SECTION],index retourne true si ok.
- if(config.addSection("TEST",config.end() ) )cout<<"VALEUR CORRECTEMENT AJOUTEE"<<endl;
-
- //ajouter un couple 'variable/valeur'
- //la variable est un string, la valeur peut etre de plusieurs types
- config.addValeur("TEST","variable_string","valeur");
- config.addValeur("TEST", "variable_int", 10);
- config.addValeur("TEST", "variable_double", 12.3254e-5);
-
- //changer une valeur existante
- if(config.setValeur("TEST","starts",2))cout<<"VALEUR MODIFIE"<<endl;
-
- //effacer une cip::entry / valeur du fichier (en memoire) -> true si ok
- config.eraseEntry("PARAMETRES","vitesse");
- //effacer une [SESSION] (en memoire) -> true si ok
- config.eraseSection("PORTS");
-
-
- /**COMMENTAIRES*/
- //ajouter un commentaire au debut du fichier
- if(config.addComment(cip::ENTETE,"Ligne De Commentaire en plus au debut du fichier")) \
- cout<<"COMMENTAIRE AJOUTE"<<endl;
- //ajouter un commentaire en debut de section
- config.addComment("TEST","Commentaire de debut de section");
- //ajouter un commentaire en fin de ligne ? -> true si ok
- config.setComment("TEST","variable_double","convertion automatique");
-
-
- /**SAUVEGARDE*/
- //Sauvegarde: retourne true si ok
- if(config.save("TEST2.INI"))cout<<"SAUVEGARDE OK"<<endl;
- cout << "FIN DU TEST"<< endl;
-
- system("PAUSE");
- return 0;
- }
#include <iostream>
#include "ConfigIniParser.hpp" //classe ConfigIniParser, namespace cip
using namespace std;
int main()
{
/** OUVERTURE */
//Creation de l'objet config avec ouvertur automatique du fichier
cip::ConfigIniParser config("TEST.INI");
/**LECTURE */
//Recuperation d'une valeur 'vitesse' dans la section 'PARAMETRE' !case sensitive!
if(config.getValeur("PARAMETRES","vitesse")!=cip::ERREUR){
cout<<"Vitesse (String)="<<config.getValeur("PARAMETRES","vitesse")<<" ; ";
}
cout<<"Commentaire de fin de ligne : "<<config.getComment("PARAMETRES", "vitesse")<<endl;
//Recuperation d'une valeur 'vitesse' dans la section 'PARAMETRE' !case sensitive!
//Methode permettant de demander un 'format' de retour -> true si ok
int vitesse_int;
if(config.getValeur("PARAMETRES","vitesse",vitesse_int)){
cout<<"Vitesse (int)="<<vitesse_int<<endl;
}else{
cout<<"Impossible de convertir 'vitesse' en int"<<endl;
}
double vitesse_dbl;
if(config.getValeur("PARAMETRES","vitesse",vitesse_dbl)){
cout<<"Vitesse (double)="<<vitesse_dbl<<endl;
}else{
cout<<"Impossible de convertir 'vitesse' en double"<<endl;
}
/** ECRITURE */
//ajout d'une [SECTION],index retourne true si ok.
if(config.addSection("TEST",config.end() ) )cout<<"VALEUR CORRECTEMENT AJOUTEE"<<endl;
//ajouter un couple 'variable/valeur'
//la variable est un string, la valeur peut etre de plusieurs types
config.addValeur("TEST","variable_string","valeur");
config.addValeur("TEST", "variable_int", 10);
config.addValeur("TEST", "variable_double", 12.3254e-5);
//changer une valeur existante
if(config.setValeur("TEST","starts",2))cout<<"VALEUR MODIFIE"<<endl;
//effacer une cip::entry / valeur du fichier (en memoire) -> true si ok
config.eraseEntry("PARAMETRES","vitesse");
//effacer une [SESSION] (en memoire) -> true si ok
config.eraseSection("PORTS");
/**COMMENTAIRES*/
//ajouter un commentaire au debut du fichier
if(config.addComment(cip::ENTETE,"Ligne De Commentaire en plus au debut du fichier")) \
cout<<"COMMENTAIRE AJOUTE"<<endl;
//ajouter un commentaire en debut de section
config.addComment("TEST","Commentaire de debut de section");
//ajouter un commentaire en fin de ligne ? -> true si ok
config.setComment("TEST","variable_double","convertion automatique");
/**SAUVEGARDE*/
//Sauvegarde: retourne true si ok
if(config.save("TEST2.INI"))cout<<"SAUVEGARDE OK"<<endl;
cout << "FIN DU TEST"<< endl;
system("PAUSE");
return 0;
}
Conclusion
Ne trouvant pas mon bonheur dans ce que j'ai pu trouver sur le net et ici, j'ai decidé de faire cette petite classe. Elle remplie toutes les fonctions que je m'etait fixé. En utilisant cette classe, on arrive à lire et modifier/sauver un fichier .ini en gardant les eventuels commentaires et sa structure. C'est mon premier post, il faut etre indulgent :) .
Historique
- 25 janvier 2008 17:51:01 :
- modification du texte de la section 'source'
- 14 février 2008 20:51:33 :
- Modification du code pour prise en compte des commentaire, les nouvelle fonctions sont 'generiques' (utilisation de templates). L'utilisation des structures 'entry' n'est plus et ne doit plus etre utilisé.
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Classe transparente ? [ par develdelphi ]
Bonjour, <b
question de débutant [ par catamenia ]
bonjour,J'ai récupérer un fichier .cpp et .h contenant une classe.j'ai ajouter les fichiers au projet.Quand je déclare une instance de la classe, j'ai
héritage d'une template classe comme vector [ par Urukai1 ]
bonjourje suis un newbie en cpp, et j'ai fait beaucoup de javaje souhaite faire une classe qui herite par exemple de la classe vector<T> avec te
lecture d'un fichier XML! [ par tylenchuz ]
rebonjour a tous,j'utilise un protocole de réseau un peu space, ce protocole me délivre des fichiers.ces fichiers sont tous identifiés par un numéro (
Testez le typename avec une classe utilisant les templates [ par amorosalain ]
[size=6][b][i]SAM[/i][/b][/size=6]Bonjour à tous.J'ai besoin d'un peu d'aide.J'ai une classe ou j'utilise un template.template<typename T>maclas
Fichiers Virtuels [ par gamemonde ]
bonjour je sais pas si je dois appeller cela comme cela mais bon j'aimerais savoir si on peux faire en sort de creer une zone memoire qui reagirais co
boite de dialogue [ par bougnat83 ]
bonjour,windows 2000visual c++ 6.0 je recherche un code pour créer une boite de dialogue listant les fichiers contenus dans un répertoire prédéfini (p
classe contenant un attribut de son propre type [ par Sk8yo ]
Bonjour,voila je cherche a créer une classe contenant un attribut de cette meme classe,du genre:----------------------class A{ private: A attribut
|
Derniers Blogs
TECHDAYS PARIS 2010 : ADMINISTRATION SHAREPOINT 2010TECHDAYS PARIS 2010 : ADMINISTRATION SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Patrick Guimonet et Benoit Hamet Cette session traitera des différents points exigés durant les taches d'administration : Planification (architecture, hébergement, authentification, .) Opération e...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [TECHDAYS 2010] #03 - WEB CONTENT MANAGEMENT SOUS SHAREPOINT 2010[TECHDAYS 2010] #03 - WEB CONTENT MANAGEMENT SOUS SHAREPOINT 2010 par pierre
Stephane Cordonnier de MCNext nous présente les fonctionnalités Web Content Management (WCM) sous SharePoint 2010. Qu'est-ce que le WCM ECM, GED, RM, WCM c'est quoi Plateforme SharePoint Versions SharePoint 2010 SharePoint Fondation...
Cliquez pour lire la suite de l'article par pierre [DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE[DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE par tja
C'est le dernier principe des principes du Design Orienté Objet (The Principles of Object Oriented Design) fondés par Robert C. Martin plus connu sous le pseudonyme d'Uncle Bob.
l'image empruntée de LosTechies.
Je ne traite pas les principes dans...
Cliquez pour lire la suite de l'article par tja TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
CAST DE POINTEURSCAST DE POINTEURS par zaraki21
Cliquez pour lire la suite par zaraki21 CARTE GOOGLECARTE GOOGLE par ja92
Cliquez pour lire la suite par ja92 RE : WIN APIRE : WIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|