Probleme réduoération de variable contenu dans une map

silverfr78021959 Messages postés 45 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 30 novembre 2005 - 14 nov. 2005 à 17:30
silverfr78021959 Messages postés 45 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 30 novembre 2005 - 15 nov. 2005 à 09:38
bonjour.
Voilà j'aurais juste une petite question à poser concernant un petit programme. En faite g créer un une calsse avec une fonction ect... cela fonctionne tres bien (je rppelle que le programme ) pour but de parcourir un fihceir .txt et de stocker les donnée dans une map), donc comme je disais ca fonctionne correctement, mais parcontre quand je veux me reservire d'une valeur stocker dasn ma map ) partir d'une autre fonction de mon programme cela ne fonctionne pas tjs j'aimerais savoir pkoi.

voici le progamme pour le parcour du fichier

Fichier config.h :

#include
#include <map>
using namespace std;
class configData
{
public:
static map<string,string> conf;
int config(string filename);
int display();
};

Fichier config.cpp :

#include "config.h"
#include
#include <string>
#include <map>
#include <fstream>


using namespace std;
//------------------------------------------------------------------------------
#define VALUE_NOT_SPECIFIED 0


map<string, string> configData::conf;


int configData::config(string filename)
{

char buffer[100];
string param, val;
ifstream file(filename.c_str());
if(!file.is_open()) return 1;
//ignore the first line
file.getline(buffer,100);
bool last = file.eof();
int cpt=0;
file.getline(buffer,100,':');
while(!file.eof())
{
//read parameters name
param = buffer;
//read parameters values
file.getline(buffer,100, ';');
val = buffer;
file.getline(buffer,100);

//save the data into the structure
conf[param] = val;
//read the next line
file.getline(buffer,100,':');
}
file.close();
return 0;
}


int configData::display()
{
map<string, string>::iterator it;

for (it = conf.begin(); it != conf.end(); it++)
cout << '<' << it->first << ", " << it->second << '>' << endl;
cout << "essai :" << conf["fichier"] << endl;
return 0;
}

fichier principal :

#include "config.h"
#include
#include <stdlib.h>


using namespace std;
configData conf;


int main(int argc, char *argv[])
{

conf.config("C:\\Dev-Cpp\\develop\\fichier.txt");
conf.display();

return 0;
}

donc si je crais une autre fonction et que je désire afficher les valeur dema map en faisant configData::conf["fichier" cela fonctionne pas tjs dans certaine fonction oui et d'autre il me met un blanc savait vous pkoi, qu'est-ce qui pourais blowué, car moi je trouve que je trouve pas du totu c bizard que ca marche dasn des fonction et pas d'autre. merci pour votre aide.

2 réponses

Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
14 nov. 2005 à 23:33
Salut,

juste pas curiosité peux-tu essayer quelque chose comme ça pour la lecture de ton fichier ?

Sinon si ta boucle
utilisant les itérateurs doit afficher les bonnes valeurs, le problème
viendrait plutôt de la fonction de lecture. (sauf s'il n'y a pas de
param "fichier" dans ton map dans ce cas, une chaîne vide est affichée.





int configData::config(string filename)
{
ifstream file(filename.c_str());
if(!file.is_open()) return 1;


//ignore the first line
file.ignore( 32000, '\n' ); /// un gros chiffre


string param, val;

while( getline( file, param, ':' ) && getline( file, val, ';' ) )

config[ param ] = val;



return 0;
}



Ma participation à la saturation du net:

http://hylvenir.free.fr
0
silverfr78021959 Messages postés 45 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 30 novembre 2005
15 nov. 2005 à 09:38
Ben non ma fonction de lecture est bonne uisque j'ai bien les résultat, le probleme vient lorsque j'essai de faire une lecture à partir d'une autre fonction crée parfois la lecture marche et sur d'autre fonction elle ne marche pas et je vois pas du tout pkoi. Etant donné qu'elle marche dans mon fichier config.cpp, dans quelques autre fonction ???

Sinon oui ton code est plus optimiser je suis d'accord avec toi, je n'y avais pas pensé
0
Rejoignez-nous