IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Lecture de fichier et map


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 91
    Points
    91
    Par défaut Lecture de fichier et map
    Bonjour, j'ai mis un code cette fois ci pour que vous compreniez mieux mon problème. Mon exemple lit les éléments dans un fichier. txt récupéré les éléments de ce .txt et le stocke dans une map.

    J'ai 2 messages d'erreur.
    Le premier, il semble pas vouloir recopier la map.(voir code)
    Le second, il me demande un paramétre dans mon main, ce qui est normal mais pourtant je passe ce parametre en interne via mon egalité.

    Ce que j'aimerais c'est pouvoir imprimer ensuite la map depuis mon main mais je renvoie un bool...
    Puis, mettre la majeur partie de ce qui se trouve dans la méthode lecturedefichier dans mon constructeur et appeler la map creer dans le constructeur via ma méthode.
    Merci pour les précisions.




    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
    #include <map>
    #include <string>
     
    #ifndef _exemple_h
    #define _exemple_h
     
     
    class exemple{
     
     
     
    private:
     
     
    public:
     
    	exemple();
    	virtual ~exemple();
    	bool lecturedefichier(const exemple & monexemple);
     
     
     
     
     
    };
    #endif
    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
    #include "exemple.h"
     
    #include <iostream>
    #include <fstream> //file lib
    #include <istream>
    #include <string>
    #include <map>
    using namespace std;
     
    exemple::exemple(){};//constructeur
     
    exemple::~exemple(){};//destructeur
     
    bool exemple::lecturedefichier(const exemple& monexemple){//méthode
     
    	string caractere;
    	int nombre;
    	map<string, int> my_map;
     
    	ifstream file("Document.txt");
    	if (file)
    	{
    		while(!file.fail())
     
    		{
    		  file>>caractere>>nombre;
    		  my_map[caractere]=nombre;		
    		  cout<<caractere<<"-"<<nombre<<endl;
    		}
    		//debug
    		//for (map<string, int>::iterator i = my_map.begin(); i!=my_map.end();i++)
    		//{
    		//	cout<<"caractere : "<<i->first<<"nombre : "<<i->second<<endl;
    		//}
    			monexemple = my_map;
    	}
    	else
    	{
    		cout<<"ERROR :  can't open file";
    	}
    	return true;
    }
    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
     
    #include <iostream>
    #include <fstream> //file lib
    #include <istream>
    #include <string>
    #include <map>
    #include "exemple.h"
     
    using namespace std;
     
    int main ()
    {
    exemple* monexemple	= new exemple;
    monexemple->lecturedefichier();
     
    cout<<"hello";
    getchar();
    return 0;
    }

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Peux tu nous donner les messages d'erreur s'il te plait ? Je pense que cela nous aidera.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 91
    Points
    91
    Par défaut
    bien sur,

    \exemple.cpp(35) : error C2678: '=' binaire*: aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'const exemple' (ou il n'existe pas de conversion acceptable)
    1> c:\documents and settings\administrateur\mes documents\visual studio 2008\projects\exempledev\exempledev\exemple.h(25): peut être 'exemple &exemple::operator =(const exemple &)'
    1> lors de la tentative de mise en correspondance de la liste des arguments '(const exemple, std::map<_Kty,_Ty>)'
    1> with
    1> [
    1> _Kty=std::string,
    1> _Ty=int
    1> ]
    1>main.cpp
    1>.\main.cpp(14) : error C2660: 'exemple::lecturedefichier'*: la fonction ne prend pas 0 arguments
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\exempleDev\exempleDev\Release\BuildLog.htm"
    1>exempleDev - 2 erreur(s), 0 avertissement(s)
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    En ce qui concerne l'erreur ligne 14 de ton main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monexemple->lecturedefichier();
    le message d'erreur est clair, cette fonction n'attend pas 0 paramètre.

    En regardant le .h, on voit effectivement que la fonction est déclarée comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool exemple::lecturedefichier(const exemple& monexemple)
    C'est d'ailleurs un peu bizarre comme déclaration, je m'attendais plutôt à un nom de fichier mais tu dois savoir ce que tu fais.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 91
    Points
    91
    Par défaut
    Je comprends pourquoi tu penses ca.
    Mais en fait le nom de fichier viens à la suite de ifstream file.

    Ce que je recherche à faire c'est de recopier la valeur de ma map dans (const exemple& monexemple).
    Comprends tu ce que je cherche à faire?
    Je dois dire que tout fonctionne tres bien lorsque je renvoie void et que je fais un cout dans ma methode. Donc ma map est bien remplie.

    Je passe à coté de quelque chose mais je ne sais pas encore quoi.

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Tu ne peux pas copier ta map dans const exemple& monexemple. Cela reviendrai à modifierl'objet monexemple et il est constant donc tu n'as pas le droit de le modifier.

    Donc soit ton besoin n'est pas clair, soit tu cherches à faire des choses interdites avec ton objet.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 91
    Points
    91
    Par défaut
    J'ai donc plusieurs solutions, soit j'enlève le const. Ou soit au lieu de retourner un bool, je retourne ma map directement. Je vais tester tout ça mais il me semblait que je pouvais faire ça, c'est une espèce de surcharge en faite.

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    bool exemple::lecturedefichier(const exemple& monexemple){//méthode
     
    	string caractere;
    	int nombre;
    	map<string, int> my_map;
    //.... 
    			monexemple = my_map;
    //....
    1/Tu déclares monexemple comme const. Donc tu ne peux affecter une valeur à celui-ci
    2/Je n'ai rien vu qui puisse transformer ton map en exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main ()
    {
    exemple* monexemple	= new exemple;
    monexemple->lecturedefichier();
    }
    1/ Quel est l'intérêt d'allouer monexemple sur le tas ? Pourquoi ne pas en faire une variable sur la pile ?
    2/ lecturedefichier doit prendre un argument et tu ne lui en fournis pas.

Discussions similaires

  1. Problème de lecture du fichier de mapping
    Par sylsau dans le forum Hibernate
    Réponses: 5
    Dernier message: 11/04/2007, 13h06
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 12h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 12h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 21h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo