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 :

faire comme std::endl


Sujet :

C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut faire comme std::endl
    Bonjour à tous,

    J'ai fait une classe de log qui surcharge l'opérateur "<<" pour l'utiliser ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myLogger << i << f << "message";
    Désormais, je cherche à rajouter des modificateurs, comme std::endl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myLogger << "message" << log::NewLine;
    Comment je dois m'y prendre ?

    Merci,

    A bientôt

  2. #2
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    Je sais pas exactement ce que tu veux, mais est-ce que mettre un \n dans ton buffer et le flusher te semble réalisable ?

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Bonjour,

    Citation Envoyé par Lavock Voir le message
    Je sais pas exactement ce que tu veux, mais est-ce que mettre un \n dans ton buffer et le flusher te semble réalisable ?
    J'aurais dis la même chose... Si "log" est une classe, "NewLine" peut en être une variable statique qui vaut "\n"... Non ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    En fait c'est que j'aurais des modificateurs aux comportements différents selon que nous soyons sur Windows ou Linux.

    Mais j'ai trouvé, mon opérateur "<<" est défini ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    template<class T> operator <<(const T& ToLog);
    Il suffisait de faire une seconde définition prenant un pointeur de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ILogger& operator << (ILogger& (*func) (ILogger &))
    {
       return func(*this);
    }
    Et ensuite on se crée les fonctions nécessaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ILogger& NewLine(ILogger& logger)
    {
       return (logger << "\r\n");
    }
    Et désormais je peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Log << "message " << NewLine;

  5. #5
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    C'est exactement la même version que la STL, sauf que un endl, ça flush aussi >< !

    Pour la différence de comportement, je pourrait pas te dire. La norme mais dans sa version ios::widen('\n'). Qui est rappelle une fonction template de ctype... Je pense que ça peut aller loin comme ça. J'espère que ton log est un ios >< !

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

Discussions similaires

  1. std::endl c'est quoi ??
    Par elekis dans le forum SL & STL
    Réponses: 8
    Dernier message: 14/09/2005, 17h15
  2. Que faire comme étude ?
    Par Xo Sonic oX dans le forum Etudes
    Réponses: 7
    Dernier message: 03/06/2005, 15h51
  3. Que peux-t'on faire comme application ?
    Par lalystar dans le forum Java ME
    Réponses: 2
    Dernier message: 11/12/2004, 05h36
  4. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 15h39

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