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 :

Entrées.. Sorties.. quelques précisions..


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 89
    Par défaut Entrées.. Sorties.. quelques précisions..
    Bonjour a tous,

    Je suis en train de bosser le c++...

    Et il y a deux trois trucs sur lesquels j'ai du mal a trouver des infos, globalement j'ai a peut près réussit a comprendre le fonctionnement en général, mais je voudrais juste être sur de ce que je fais... ( de grandes esperances vous allez me dire ! encore des questions de noob...) mais surtout être sur d'avoir compris le principe, vu que mon prof n'est pas ouvert a la discussion... ni au bricolage ! (comprendra qui pourra ! (perso promo).

    -Pour le moment je suis sur la partie formatage des sorties, les points qui me sont délicats sont :

    - on va commencer avec une question bête : lors de la spécification d'un flux j'ai rencontré deux formats, par exemple : cout << "etc..." << std::flush; et std::cout << "etc ..." << endl;
    q1 : le "std::" c'est pour la forme?, histoire de dire qu'on est standard ? si toutefois on peut ne pas l'être ! (vous allez me dire, question de point de vue...) mais disons que si on veut bien faire les choses, la précision de "std::" s'impose t'elle?
    q2 : le flush, j'ai bien compris que c'étais pour forcer l'affichage (provoqué par le vidage du tampon). mais apparement celui-ci est automatiquement provoqué par le endl, et franchement je crois que je ne l'ai jamais vu employé, les sorties qu'on m'a appris a coder se font sans... alors est-ce qu'on m'apprend a coder avec les pieds? a l'arrache et en bricolant justement...

    - Globalement j'ai compris qu'on pouvais formatter un flux de plusieures façons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    /*pour le formatage d'un flux de sortie en totalité et seulement lui*/
    1. cout.setf(ios_base::scientific,ios_base::floatfield);
    2. std::cout << nb << std::flush;
     
    /* pour avoir un affichage du flux en hexa */
    3. std::cout << std::hex <<"         " <<  (deb+cpt-1) << endl;
     
    /* pour afficher en decimal */
    4. std::cout <<  (int)(deb+cpt-1) << endl;
     
    /* afficher un caractere a partir d'un int */
    5. std::cout << (char)(deb+cpt+1) << endl;
     
    /* afficher un caractere mais par opération de cast */
    6. std::cout << "   " << char(deb+cpt-1) << std::flush;
    q3 : j'ai deux trois comportement assez étrange, la ligne 3. me donne bien l'affichage en hexa, mais par contre si je veux afficher un entier en décimal par la suite (ligne4 par exemple), celui ci sort en hexa !!! (même s'il est précisé que je voulais un affichage en decimal!!!) j'en ai déduis que l'emploi d'une spécification de format en utilisant le principe de la ligne 3 formatais toute les sorties en hexadécimal alors que la ligne 4 ne ciblera que cette sortie la? (même s'il ne le fais pas..) élémentaire mon cher Watson ! ou j'suis vraiment pas capable d'aligner 2 lignes de codes sans raconter des conneries?

    q4 : ligne 5 ou 6 question philosophique : cast ou pas cast?

    Bon voila, j'ai laché une partie de mes aigreures passagères, provoqué par un prof qui a oublié le sens du mot pédagogie, si vous avez une ou deux info la dessus, ou un petit lien qui m'aurais échappé... un grand merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 89
    Par défaut
    J'étais partit sur autre chose et je reviens donc sur ces deux trois stress,

    bon, je suis pas loin d'avoir toutes les réponses,

    q1, ben non, pour le std::, indispensable si l'on ne précise pas dans l'appel d'entete using namespace std, permet de préciser au compilateur qu'il doit aussi chercher les fonctions cout, cin etc... aussi dans l'espace standard en plus du global...


    q2, apparement pas indispensable, sauf si on veut être sur que l'affichage ai bien eu lieu avant le passage a l'instruction suivante

    q3, l'emploi de std::hex formate l'affichage de tous les flux de sortie d'entiers en hexa, necessaire de preciser std::dec si on veut un affichage en decimal

    q4 : no comment...

    ps : je crois que je me suis planté de section,, sans réellement le vouloir, je sais pas trop ce que g foutu, excusez, donc si un modo pouvait le déplacer ou supprimer la chose(je ne sais pas si il y a un réel interet a mon post), je n'y verais aucun inconvenient...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Par défaut
    Citation Envoyé par Djef-69 Voir le message
    q1 : le "std::" c'est pour la forme?, histoire de dire qu'on est standard ? si toutefois on peut ne pas l'être ! (vous allez me dire, question de point de vue...) mais disons que si on veut bien faire les choses, la précision de "std::" s'impose t'elle?
    Ce n'est pas juste pour la forme. Le "std::" précise que les classes et les fonctions que tu vas utiliser se trouvent dans l'espace de nommage "std". Pour les utiliser, il faut donc qualifier chacun de leur nom par "std::", ou bien utiliser au préalable une clause "using namespace std" pour indiquer au compilateur dans quel espace de nommage il doit les chercher.
    Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout << "..." << std::endl;
    est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    using namespace std;
    cout << "..." << endl;
    Mélanger des appels avec "std::" et d'autres sans n'a pas beaucoup de sens.

    le flush, j'ai bien compris que c'étais pour forcer l'affichage (provoqué par le vidage du tampon). mais apparement celui-ci est automatiquement provoqué par le endl, et franchement je crois que je ne l'ai jamais vu employé, les sorties qu'on m'a appris a coder se font sans... alors est-ce qu'on m'apprend a coder avec les pieds? a l'arrache et en bricolant justement...
    std::endl est équivalent à << "\n" suivi de std::flush. Faut donc utiliser flush si tu ne veux pas de saut de ligne et endl si tu veux un saut de ligne suivi d'un flush. Et si tu veux en saut de ligne sans flush, n'utiliser que << "\n".

    la ligne 3. me donne bien l'affichage en hexa, mais par contre si je veux afficher un entier en décimal par la suite (ligne4 par exemple), celui ci sort en hexa !!!
    Quand tu utilises un manipulateur comme std::hex, il reste en action jusqu'à ce qu'un autre manipulateur donne autre format au flux. Dans ta ligne 4, il n'est pas spécifié d'autre manipulateur, donc l'entier (deb+cpt-1) est toujours affiché au format hexadécimal. Utilise std::dec pour revenir au format décimal.

    ligne 5 ou 6 question philosophique : cast ou pas cast?
    Ligne 5, oui. Ligne 6, je sais jamais ce qu'est censée signifier cette syntaxe.

    aigreures passagères, provoqué par un prof qui a oublié le sens du mot pédagogie
    z'ont bon dos les profs

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

Discussions similaires

  1. quelques précisions sur no-ip entre autres
    Par Invité dans le forum Achat et Conseils
    Réponses: 7
    Dernier message: 12/01/2013, 17h53
  2. [Débutant]Procédure avec paramètres entrée / sortie
    Par jeromejanson dans le forum Langage
    Réponses: 13
    Dernier message: 10/10/2005, 08h30
  3. Débutant - Entrée/Sortie
    Par seigneur.viggen dans le forum Langage
    Réponses: 11
    Dernier message: 28/09/2005, 15h47
  4. Copie entrée-sortie
    Par Troell dans le forum C
    Réponses: 18
    Dernier message: 24/09/2005, 19h11
  5. Réponses: 11
    Dernier message: 13/10/2004, 00h58

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