Remplissage d'un std::list

Résolu
boun85 Messages postés 33 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 29 novembre 2005 - 26 juin 2005 à 15:35
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 - 26 juin 2005 à 21:56
Voila mon probleme est assez simple je pense mais je n'arrive pas a le resoudre.

Voila j'ai une fonction qui lit un fichier et qui rempli une std::list<Question *> a partir des infos qu'il a lu.

La class Question est defini ainsi :

class Question

{

private :

const char *intitule;

const char *repA;

const char *repB;

const char *repC;

const char *reponse;

public :

Question(const char * sujet,const
char* rep1, const char * rep2, const char* rep3, const char * rep);

Question();

};



Voila la fonction :
std::list<Question *> sesQuestions;
void lireQuestions()

{

int nbQuest, lu=0;

char intitule[200], repA[50], repB[50], repC[50], goodRep[2];

std::ifstream fichier("files/Questions.txt");

fichier >> nbQuest; fichier.ignore();



while(lu<nbQuest)

{

fichier.getline(intitule,200);

fichier.getline(repA,50);

fichier.getline(repB,50);

fichier.getline(repC,50);

fichier.getline(goodRep,2);

Question * q = new Question(intitule,repA,repB,repC,goodRep);

sesQuestions.push_back(q);

}

fchier.close();

}



Le probleme ne se situe pas vraiment dans la lecture du fichier
puisqu'il est bien lu (les variables prennent les bonnes valeurs) mais
dans l'insertion dans la list.En fait aucune infos n'est inserer dans
la liste juste des pointeurs sur des valeurs incomprehensible. Je pense
a un probleme dans un pointeur mais si je fais :

Question * q = new Question("Une question","reponse A", "reponse B", "reponse C","a");

sesQuestions.push_back(q);



ca marche donc je vois pas d'ou ca vient , je suis completement perdu alors s'il vous plait aidez moi .



Merci a celui qui aura eu le courage de lire tout et de me repondre.

9 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
26 juin 2005 à 17:48
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
26 juin 2005 à 16:18
Qu'est ce qui te fait dire que les infos ne sont pas bien insérées?
Peut que tout simplement tu ne sais pas relire une liste. Tu utilises
un itérateur pour cela?
0
boun85 Messages postés 33 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 29 novembre 2005
26 juin 2005 à 17:22
Je sais bien relire les infos insere puisque je les affiche plus tard
dans le programme et pour cela j'utilise effectivement un
const_iterator.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
26 juin 2005 à 17:27
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
boun85 Messages postés 33 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 29 novembre 2005
26 juin 2005 à 17:35
jy arrive kan je fai

Question * q = new Question("Une question","reponse A", "reponse B", "reponse C","a");

sesQuestions.push_back(q);



mai pas si je passe en parametre du constructeur les variables ke je
recupere lors de la lecture du fichier c pour ca ke je compren rien
surtout ke ces varaibles contiennent bien les bons textes
0
boun85 Messages postés 33 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 29 novembre 2005
26 juin 2005 à 17:55
Fodra que j'essaye ca . pour ce ki est des string j'avai deja essayé
mai comme j'utilise une librairie graphique qui ne les pren pa en
charge je les avai virer pour etre sur ke ca venai pa de la.

J'essaye ca et jte tien au couran
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
26 juin 2005 à 18:12
0
boun85 Messages postés 33 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 29 novembre 2005
26 juin 2005 à 20:06
Je te remercie ca marche et ca ma meme permis de corriger d'autres bugs dont je viens de me rendre compte.

En fait ce que je voulais dire par 'ne les prend pas en charge' c'est
juste que je peu pas directement les passé en paramètre pour les
fonctions d'affichage de texte mais je peut bien sur faire un .c_str()
pour les mettre en char * mais comme ca bugguai j'preferai faire
directement des char *.



Enfin bon merci encore pour ton aide
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
26 juin 2005 à 21:56
Ne pas oublier le caractère supplémentaire pour stocker le '\0' final:



repA = new char[strlen(rep1) + 1]

Kaid - kaid.fr.st
0
Rejoignez-nous