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 :

Comment diriger une sortie soit à l'ecran soit dans un fichier


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut Comment diriger une sortie soit à l'ecran soit dans un fichier
    Bonjour,

    Détail du sujet :
    Je voudrais envoyer à une fonction la destination d'une sortie.
    Exemple de fonction telle que je l'avais ecrite et qui ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaFonctionWrite(ostream Out)
    { Out<<"J'ecris ce que je veux où je veux!";}
    Puis l'appelle se ferait ainsi :
    cout étant la sortie standard vers l'écran, je verrai s'afficher à l'écran ma phrase.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaFonctionWrite(MonFichierLog)
    Ici ma phrase sera inscrite dans un fichier log ouvert préalablement.

    J'ai bien regardé les tutos sur les flux mais je n'arrive pas à tout comprendre de sorte de faire ce que je veux.
    Comment faire, merci d'avance.

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void write(std::ostream& out)

    ios_base et donc ostream est non-copyable.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    EXCELLENT !!!
    J'avais pourtant essayé ostream mais ca ne marchait pas. Peut etre que je n'avais pas mis le dereferencement ... ?

    MERCI pour la reponse et pour la rapidite de celle ci.

    Mais que veux tu dire avec ... est non copiable ?

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    & ici ne signifie pas le déréférencement. Celà signifie qu'on passe l'objet (ici un flux ostream) par référence et non par valeur (=sans rien comme tu le faisais).
    Quand tu passes par valeur alors une copie est créer et c'est là que ça posait problème car ostream est non-copyable (voilà pourquoi je l'ai expliquer), son constructeur par recopie et son opérateur son déclaré (et non définie) en privée.
    En passant par référence tu évites la copie puisque tu crées un alias (la référence) sur l'objet. Pour plus de détail je te conseil de lire un cour (il y'en a des très bien ici) sur les références et les histoires de passages par valeur / référence / pointeur .

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

Discussions similaires

  1. Réponses: 26
    Dernier message: 20/06/2010, 18h24
  2. Réponses: 11
    Dernier message: 05/04/2010, 22h10
  3. Comment sauter une ligne lors de l'ecriture dans un fichier
    Par Harald dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 29/05/2009, 18h01
  4. Comment stocker une macro pour qu'elle soit accessible partout
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 06/06/2008, 23h11
  5. Réponses: 11
    Dernier message: 20/09/2007, 16h58

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