Class simple pour lire des fichier *.ini

Soyez le premier à donner votre avis sur cette source.

Vue 6 587 fois - Téléchargée 653 fois

Description

Cette classe basic permet l'utilisation d'un fichier ini de façon très simple dans un programme.
Je l'ai réalisée car justement je ne trouvé pas de classe toute bête pour lire dans un fichier ini sans utiliser les fonction de la librairie windows.h (GetPrivateProfileString, WritePrivateProfileString).
Dans le zip vous trouverez un exemple simple qui montre comment utiliser cette class.

Source / Exemple :


class INIParser
{
	private:
		std::map<std::string, std::map<std::string, std::string> > ini;
		std::string FileName;
		bool AutoSave;
		
	public:
		INIParser(const std::string &, bool=false);
		~INIParser()
		{
			if(AutoSave)	save();
			ini.clear();
		};
		// permet de recupérer une valeur, et retourne une valeur par defaut si la clef n'est pas trouvé
		template <class T> T GetValue(const std::string &, const std::string &, const T &);
		// permet d'enregistrer une valeur, ou dans modifier une existante.
		template <class T> void SetValue(const std::string &, const std::string &, const T &);
		// enregistre la map dans un fichier.
		bool save(std::string="");
};

// voir le zip pour la description des fonctions

Conclusion :


Est-ce que quelqu’un peut m’expliquer comment décrire les fonctions de la classe qui ne sont pas de type générique dans un fichier cpp. Car actuellement si je décris la fonction save, et le constructeur en dehors du fichier .h je me trouve avec une erreur de multiple définition.

Je suis ouvert à toute critique tant qu’elles sont constructives.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

shenron666
Messages postés
229
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
-
non c'était récupérer un couple clef valeur dans une section et cette même clef avec potentiellement une autre valeur dans une autre section, et ça sa classe le fait

par contre, on n'a pas la possibilité de récupérer une section pour parcourir les clefs qu'elle contient
lglandeur
Messages postés
28
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009
-
Shenron666, en fait si je comprends bien se que tu veux dire c'est que l'on pourrait juste préciser la section, et dans se cas cella renvoi tous les couple clef/valeur de la section?

Si c'est bien cela je n'en vois pas trop l'intérêt car cela voudra dire que le devras gérer la recherche de clef de nouveau dans le programme alors que c’est déjà fait dans la class.
magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1 -
Oui, shen, c'est la méthode qui m'a eu été enseignée en conception logicielle et que j'applique toujours.

Magicalement
shenron666
Messages postés
229
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
-
laisses tomber pour la section, j'ai compris pourquoi ça ne marchait pas sur mon programme
j'ai des clefs avec des / et je n'avais pas vu que dans ton code tu concaténais la clef et la section avec un /
dommage ça partait d'une bonne idée
shenron666
Messages postés
229
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
-
quand je disais que tu ne prenais pas en compte les sections dans ta lecture, je visais le cas de figure où pour exemple :
- tu as une section [Section1] avec un couple clef/valeur "Sélection = 2"
- tu as une section [Section2] avec un couple clef valeur "Sélection = 0"

comment je fait pour récupérer le paramètre de [Section1] et le paramètre de [Section2] dans mon application ?

MAGIC_NONO, tu parles de déclarer ton template dans un cpp et de l'inclure à la fin du hpp ? c'est une "astuce" qui fonctionne même si elle fait un peu bidouille

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (lglandeur)