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 :

Manipulation des fichiers


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2013
    Messages : 10
    Par défaut Manipulation des fichiers
    bjr...

    qlq 1peut me dire ou est le pb ici j'arrive pas à compiler ce code;

    msg d'erreur :error: cannot bind 'std::basic_ostream<char>' lvalue to 'std::basic_ostream<char>&&'
    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
    #include <iostream>
    #include <string>
    #include <fstream>
     
    using namespace std;
    //***********************************
    class client{
    	int no_ident;
    	char nom[20];
    	char prenom[20];
    	public :
    	void creer()
    	{
    		cout<<"\n n_identification,nom et prénom du client:";
    		cin>>no_ident>>nom>>prenom;
    	}
    	void afficher()
    	{cout<<"\n Num identification :"<<no_ident;
    	 cout<<"\n Nom"<<nom;
    	 cout<<"\n prenom"<<prenom;
    		}
     
    	int numero(){return no_ident;}	
    	};
    //*************************************	
    int main()
    {
    client c;
        if(monFlux)    
        {
            monFlux << c.creer<< endl;
     
        }
        else
        {
            cout << "ERREUR: Impossible d'ouvrir le fichier." << endl;
        }
        return 0;
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 144
    Billets dans le blog
    4
    Par défaut
    Le problème c'est que monFlux << c.creer<< endl; n'a aucun sens vu que creer est une fonction void creer();, et c'est sûrement la ligne de l'erreur (ou l'une d'entres elles).
    Après dans le désordre
    - d'où sort monFlux ?
    - pourquoi l'indentation et les retours à la ligne sont aléatoires ?
    - que viennent faire des char[] quand on a std::string ?
    - la const-correctness est inexistante
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre habitué
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2013
    Messages : 10
    Par défaut
    j'ai trouvé plusieurs version de maniplulation de fichiers en c++ mais j'arrive pas à trouver la bonne solution...et aprés la modifiction de modification de mon code un autre msg d'erreur s'affich:calim2e :
    : In substitution of 'template<class _CharT, class _Traits, class _Tp> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = void]':

    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
    #include <iostream>
    #include <string>
    #include <fstream>
     
    using namespace std;
    //***********************************
    class client{
    	int no_ident;
    	string nom;
    	string prenom;
    	public :
    	void creer()
    	{
        	cout<<"\n n_identification,nom et prénom du client:";
    		cin>>no_ident>>nom>>prenom;
    	}
    	void afficher()
    	{   
    		 cout<<"\n Num identification :"<<no_ident;
    	     cout<<"\n Nom"<<nom;
    	     cout<<"\n prenom"<<prenom;
    	}
     
    	int numero(){return no_ident;}	
    	};
    //*************************************	
    int main()
    {
    string const nomFichier("C:/aa.txt");
    ofstream monFlux("C:/aa.txt");
    ofstream monFlux(nomFichier.c_str());
    client c;
        if(monFlux)    
        {
            monFlux<<c.creer();
     
        }
        else
        {
            cout << "ERREUR: Impossible d'ouvrir le fichier." << endl;
        }
        return 0;
    }
    ......:je peux reformuler ma question comme suit :
    " est -il possible d'ajouter les valeurs d'une instance d'une classe dans un fichier texte par la commande suivante : monFlux<<c.creer(); "............comme c'est claire et court !! :

  4. #4
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 510
    Par défaut
    Bonjour,

    Citation Envoyé par espace11 Voir le message
    : In substitution of 'template<class _CharT, class _Traits, class _Tp> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = void]':
    Je ne sais pas quel compilateur tu utilises mais, après avoir :

    le message d'erreur affiché par le compilateur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    main.cpp: In function 'int main()':
    main.cpp:34:16: error: no match for 'operator<<' (operand types are 'std::ofstream' {aka 'std::basic_ofstream<char>'} and 'void')
             monFlux<<c.creer();
             ~~~~~~~^~~~~~~~~~~
    Ce message-ci est beaucoup plus clair : il indique que monFlux est de type std::ofstream, que c.creer() est de type void et qu'on ne peut pas utiliser l'opérateur << avec un premier paramètre de type std::ofstream et un deuxième paramètre de type void.
    Effectivement, le type de retour de client::creer est void. Comme cette fonction ne renvoie rien, tu ne peux pas utiliser ce rien pour écrire dans ton flux.

    Dans ton code, la fonction qui affiche le contenu d'un objet de type client est client::afficher. Mais, dans son état actuel, elle ne peut qu'écrire dans la sortie standard (via std::cout). Il faut donc modifier le code pour pouvoir écrire ce que tu veux dans un flux quelconque.

    Edit 2018-05-06-15h52 : Ah, en fait, je vois que tu as lu la fin de la très longue liste d'erreurs relevées par le compilateur.
    En fait, en général, ce qu'il faut faire, c'est se concentrer sur la première erreur relevée et oublier le reste tant que la première erreur de compilation signalée n'est pas corrigée.

  5. #5
    Membre habitué
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2013
    Messages : 10
    Par défaut
    slt

    La réponse est convaincante.............

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. manipulation des fichiers Mpeg4
    Par Raùld dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 30/05/2006, 17h43
  2. Manipulation des fichiers avec fstream.
    Par Pragmateek dans le forum SL & STL
    Réponses: 4
    Dernier message: 04/04/2006, 13h12
  3. manipulation des fichiers
    Par felicity dans le forum C
    Réponses: 2
    Dernier message: 29/12/2005, 01h11
  4. Réponses: 1
    Dernier message: 27/11/2005, 14h30
  5. Manipulation des fichiers
    Par monsau dans le forum Langage
    Réponses: 7
    Dernier message: 21/09/2004, 17h45

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