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

SL & STL C++ Discussion :

Utilisation de 'cout' et code portable ??


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut Utilisation de 'cout' et code portable ??
    Je me demandais si l'utilisation de la sortie 'cout' sortie standard était la meilleur solution lors du développement de code portable.

    Je m'explique :

    je developpe actuellement un outil avec de nombreuses sorties textes dans la console, mais demain, je vais en faire une DLL qui redirigera le texte dans un fichier.

    Alors je me dis qu'il serait mieux dans le code de mettre toutes les sorties dans un fstream déclaré en global, par exemple extern fstream cof avec par défaut une redirection dans cout->rdbuf().

    Alors comment vous faites: vous gardez cout dans votre code et redigez si besoin cout->rdbuf() ?? ou bien vous faites vos sorties standard vers une autre classe ?

    Anthony Brenelière

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Je pense qu'il serait préférable que chaque objet voulant écrire quelque chose passe par une instance unique qui s'en charge. Ainsi, juste en modifiant cette instance les clients écriront de manière transparente soit vers la sortie standard, soit dans un fichier, soit dans une socket, etc...

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut
    Voilà c'est exactement cela.

    Donc je ne dois pas utiliser cout, n'est-ce pas ?

    cout c'est uniquement pour la redirection vers la console, et l'utiliser pour rediriger le texte ailleurs n'est pas correcte, non ?

  4. #4
    Membre confirmé Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Par défaut
    perso j'ai une classe de log, qui implémente des méthode pour ouvrir un fichier, y écrir et le fermer. Dans le hpp de la lib je créer une instance en global. Tout livré sous forme de lib. Après le programme qui l'utilise appelle une méthode pour renseigner le path du fichier où il faut écrire et demande à ouvrir le fichier en début de programme. Toutes les autres libs utilise l'instance globale pour écrire. C'est pas hyper élégant mais ça marche bien.
    Il faut juste que ta lib de log soit un peu mature et evite de changer tous les jours (du moins sont interface).
    A l'intérieur on utilise les fonctions C open, close et write.
    example:

    log.hpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class LogClass
    {
        InitFile(std::string _filePath);
        Open();
        Log(std::string _monMsg);
        Close();
    };
     
    EXTERN_LOG_CPP LogClass mainLog;
    par système de define EXTERN_LOG_CPP est définit à rien dans log.cpp et à extern partout ailleurs

    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void main(int argc,char * argv[])
    {
        mainLog.InitFile("c:/myAppli/log/yyyy_mm_dd_myappli.txt");
        mainLog.Open();
     
    /* le reste de mon prog */
     
        mainLog.Close();
    }
    dans un autre source toto.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void f()
    {
         /* du code */
        mainLog.Log("je suis dans f()");
    }

Discussions similaires

  1. [WinDev5.5b] Utiliser un lecteur de code barre
    Par sami_c dans le forum WinDev
    Réponses: 8
    Dernier message: 01/10/2006, 10h50
  2. [VS2005] Comment utiliser la documentation du code en C++ ?
    Par StormimOn dans le forum Visual Studio
    Réponses: 8
    Dernier message: 16/09/2006, 16h46
  3. Réponses: 2
    Dernier message: 22/08/2006, 11h28
  4. Code portable pour ping
    Par SteelBox dans le forum C
    Réponses: 4
    Dernier message: 03/11/2005, 22h56
  5. Code Portable
    Par D[r]eadLock dans le forum C
    Réponses: 9
    Dernier message: 14/09/2002, 13h44

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