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 :

operateur << et état d'un flux


Sujet :

SL & STL C++

  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut operateur << et état d'un flux
    Bonjour,

    en essayant de répondre à cette question, j'ai essayé de comprendre comment fonctionne les états pour les flux dans la stl. Et je ne comprends pas.

    Par exemple, lorsque qu'on écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << ios_base::hex << 0xFF << endl << ios_base::binary << 0xFF << endl;
    Je ne sais pas ce qu'il se passe, mais les 0xFF ne sont pas affichés de la même façon. Moi en output j'obtiens:
    2048255
    32255
    J'ai essayé de comprendre la mécanique mais je n'y arrive pas. Les états (ios_base::binary, ios_base::hex, etc.), en fin de course ce sont des #define. Et je ne parviens pas à voir, dans le code de la STL, comment est géré le comportement des streams en fonction de son état.

    Quelqu'un sait-il comment ça marche? (c'est juste par curiosité)

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cout << ios_base::hex << 0xFF << endl << ios_base::binary << 0xFF << endl;
    2048255
    32255
    Là, tu ne modifies pas l'état du flux, tu affiches les valeurs des constantes ios_base::hex et ios_base::binary (je crois que binary s'utilise que pour les fichiers, non ?). Regarde par exemple ce qu'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << ios_base::hex << "-" << 0xFF << endl << ios_base::binary << "-" << 0xFF << endl;
    Pour modifier l'affichage, il faut utiliser les syntaxes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::cout.setf(ios_base::hex, ios::basefield); // utilisation des indicateurs définit pour ios_base
    std::cout << 0xFF << std::endl;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout << std::hex << 0xFF << std::endl; // utilisation du manipulateur définit dans <iomanip>
    Voir Stroustrup 21.4 et la FAQ

  3. #3
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut
    Effectivement je me suis un peu emmêlé les pinceaux.
    Mais tu vois, std::hex en fait c'est une fonction.
    Et pourtant on peut l'intégrer dans un flux.
    C'est ça que je voudrais comprendre en fait. Que fait exactement ce std::hex, et comment ça marche.

  4. #4
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Des liens:
    - les vieux articles quasi-de-référence sur les flux (et les locales): http://www.angelikalanger.com/Articles/Topics.html#CPP

    Une expérience de Maciej Sobczak qui montre comment embarquer des états à nous dans un flux afin d'écrire nos propres manipulateurs (mais commence quand même par les articles d'Angelika Langer):
    - http://lists.boost.org/Archives/boost/2002/10/38275.php
    - http://drdobbs.com/cpp/184402062?pgno=1
    (l'archive tarball n'est plus dispo en ligne j'ai peur)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut
    Je suis en train de lire tout ça. Ça a 10 ans mais c'est passionnant.
    Merci Luc.

    Et elle fait comme moi: elle met un _ à la fin pour les variables membre

Discussions similaires

  1. Fixer un flux de contrôle à un état
    Par TotorLeCastor dans le forum Visio
    Réponses: 2
    Dernier message: 08/01/2009, 10h33
  2. Réponses: 22
    Dernier message: 17/07/2008, 09h51
  3. Réponses: 3
    Dernier message: 19/12/2007, 21h45
  4. Surcharge des operateur de flux
    Par pit88 dans le forum C++
    Réponses: 1
    Dernier message: 25/04/2007, 10h31
  5. surcharge des operateurs de flux
    Par icer dans le forum C++
    Réponses: 6
    Dernier message: 22/02/2006, 09h02

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