Bonjour à tous.
Je vous ai pas mal sollicité durant ces derniers jours. Et je vous remercie pour votre aide.
J'aurais souhaité vous proposer mon premier code en C++ pour recueillir vos observations et surtout valider ma compréhension de l'esprit C++ au travers de cette fonction.
Elle doit aboutir à la lecture d'un fichier settings.ini qui donne notamment le chemin et le nom du fichier bdd, ainsi que les paramètres de connexion d'un ftp local. Les valeurs lues sont ensuite passées à un map parametres pour exploitation ultérieure.
L'entête :
le source :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #ifndef INITIALISATION_H #define INITIALISATION_H #include <map> class initialisation { public: initialisation(); private: bool checkInit(); std::map<std::string,std::string> parametres; std::map<std::string,std::string>::iterator itparam; }; #endif // INITIALISATION_H
Le fichier settings.ini :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 #include "initialisation.h" #include <iostream> #include <string> #include <fstream> initialisation::initialisation() { if(!checkInit()) // 1 - vérifier si settings.ini existe. { std::cout << "le fichier settings.ini est absent, illisible ou incomplet" << std::endl; //ici procédure de paramétrage } else { std::cout << "le fichier settings.ini est present" << std::endl; //ici procédure de connexion } } bool initialisation::checkInit() { std::ifstream i("settings.ini", std::ios::in); std::string ligne, str_to_find = "=", membreGauche, membreDroit; if (!i) { return(false); } while(std::getline(i, ligne)) { if (ligne.find(str_to_find) != std::string::npos) { membreGauche = ligne.substr(0,ligne.find("=")); membreDroit = ligne.substr(ligne.find("=")+1); if(membreGauche == "" || membreDroit == "") { return(false); } parametres [membreGauche] = membreDroit; } } i.close(); return(true); }
Merci pour vos remarques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [DB_SETTINGS] PATH=/. FILENAME=WesData.db [WES] IP=192.168.1.99 PORT=21 IDENTIFIANT=admin MDP=motdepasse
PS : j'ai tenté le passage du fichier dans un buffer, mais le while ne fonctionnait pas sur le buffer. Comme ce fichier n'est lu qu'une fois, j'ai opté pour une lecture directe du fichier.
Partager