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 :

Formatage de flux et invocation des manipulateurs


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 25
    Points : 24
    Points
    24
    Par défaut Formatage de flux et invocation des manipulateurs
    Bonjour !

    J'ai parcouru http://cpp.developpez.com/faq/cpp/?p...stream_iomanip et ce forum sans trouver la réponse à ma question. J'ouvre donc ce sujet : je veux formater un flux.
    Je fixe les ios_base::flags de mon flux grâce aux manipulateurs puis j'écris le flux grâce à l'opérateur <<.
    Il semble que l'appel des manipulateurs doit être fait à chaque écriture même si les flags sont persistents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      cout << setw(8) << setbase(16) << setfill('0');   
      for ( int i = 0; i <=0xF; i++ )
        cout << i << endl;
    Donne la sortie :
    00000000
    1
    .
    .
    .
    E
    F

    Il faut le code suivant pour que le formatage soit correct sur les 16 écritures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      for ( int i = 0; i <=0xF; i++ )
        cout << setw(8) << setbase(16) << setfill('0') << i << endl;
    On obtient :

    00000000
    00000001
    00000002
    00000003
    00000004
    00000005
    00000006
    00000007
    00000008
    00000009
    0000000a
    0000000b
    0000000c
    0000000d
    0000000e
    0000000f

    Sauriez vous pourquoi les manipulateurs doivent être appelés à chaque écriture ?
    Y a t il un moyen pour fixer le formatage une bonne fois pour toute afin d'éviter l'appel systématique des manipulateurs ?

    Merci pour votre aide.

    Sylvain

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Le flag width (positionné par setw) n'est pas persistant. Les autres le sont.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 25
    Points : 24
    Points
    24
    Par défaut Ref. biblio
    Merci JolyLoic pour cette réponse.
    Serait ce abuser de te demander une ref. biblio que je pourrais consulter et qui donnerait cette info et d'autres de ce genre sur les manipulateurs car j'ai parcouru le web sans succès.

    Merci

    Sylvain

  4. #4
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    www.cplusplus.com

    dans la description de setw on voit bien

    Sets the number of characters to be used as the field width for the next insertion operation.
    Et pour les autres

    Sets the basefield format flag
    Donc on modifie un flag global.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 25
    Points : 24
    Points
    24
    Par défaut PB résolu ! Merci !
    Merci à tous pour vos conseils avisés.

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

Discussions similaires

  1. [XML] Création d'un flux RSS à partir des données en base
    Par Misoss dans le forum Bibliothèques et frameworks
    Réponses: 14
    Dernier message: 01/07/2008, 17h03
  2. Redirection de flux standard vers des fichiers
    Par raoulchatigre dans le forum C++
    Réponses: 8
    Dernier message: 29/01/2008, 11h27
  3. Formatage d'un entier avec des 0 en tête
    Par AODRENN dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 14/06/2007, 19h31
  4. Formatage d'un entier avec des 0 en tête
    Par AODRENN dans le forum Delphi
    Réponses: 7
    Dernier message: 13/06/2007, 17h13
  5. [Flux RSS] Affichage des accents
    Par shako95 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 13/03/2007, 15h48

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