Problème d'insertion dans une multimap
Bonjour à tous !!
Je sollicite aujourd'hui votre bienveillante aide de codeur avancés, car j'ai quelques soucis concernant un programme que je me dois de développer.
Ce souci concerne le traitement d'un fichier de log apache, lorsque, après le parsage ligne par ligne de celui-ci (qui lui fonctionne), je souhaite stocker chaque ligne dans une multimap afin de pouvoir les utiliser par la suite.
Je stock une ligne au sein d'un objet cLine (stockant l'ip, le referer, la requête, etc...)
Je souhaite stocker cette cLine dans une multimap : multimap <string, cLine> reconstFic;
Mais lors de l'insertion de cette cLine dans la multimap, il apparaît que
seules les clés sont véritablement stockées, le reste ne nous donnant que
des lignes blanches (mais aucune erreur n'est détectée) :
voici le bout de code concerné :
Code:
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
//fonction de parsage
void gestFic::parsage(ifstream& flux, mapLigne& mapL)
{
cout<<"debut parsage"<<endl;
char buffer[512];
while (flux.getline(buffer,512)!='\0')
{
cLine nouvLigne(buffer); //on crée une ligne
mapL.insert(nouvLigne); //on insert cette ligne dans la multimap
}
mapL.affiche();
cout<<"fin parsage"<<endl;
}
//méthode d'insertion dans la multimap
void mapLigne::insert(cLine& ligneIns)
{
reconstFic.insert ( pair<string,cLine>(ligneIns.recupReq(),ligneIns)); //reconstFic est la multimap attribut de la
} //classe mapLigne
//recupReq permet de récupérer la requete
//d'une ligne pour la mettre en clé
//Affichage des éléments de mapL
void mapLigne::affiche()
{
multimap <string,cLine>::iterator it; //Ici seules les clés sont correctement affichées [..]
for (it=reconstFic.begin() ; it != reconstFic.end(); it++ ) //exemple1
{
[cout<<it->first<<endl;] //les attributs de donnent pas quelque chose de
cout<<it->second.recupReq()<<endl; // correct -> exemple2
}
}
//exemples (les deux exemples sont censés donner les mêmes résultats (renvoient tous deux la liste des requetes effectuées))
//exemple1 (avec les clés)
Console :
debut parsage
/SiteWebIF/Intranet-personnel.php
/SiteWebIF/Intranet-personnel.php
/SiteWebIF/Intranet-personnel.php
/SiteWebIF/Intranet-personnel.php
...
/temps/suivant.gif
/temps/suivant.gif
/temps/suivant.gif
/temps/suivant.gif
/temps/suivant.gif
fin parsage
/exemple2 (avec les attributs de la multimap)
Console :
debut parsage
...
fin parsage |
Un énorme merci pour ceux qui auront le courage de porter attention à mon poste !!!
Haric0t.