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 :

Tabulation sur bloc entier de lignes dans cout


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Par défaut Tabulation sur bloc entier de lignes dans cout
    Bonsoir,

    J'effectue ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cout << "Nom        : " << nom << endl;
    cout << "Prenom     : " << prenom << endl;
    cout << "Autres     : " << personne.getOtherInfos() << endl;
    Avec nom, prenom des string.
    La méthode getOtherInfos renvoi un string dont la représentation est :
    "Information 1 : aaa" << endl
    "Information 2 : bbbbbb" << endl
    "Information 3 : cccc" << endl

    L'idée serait d'avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Nom        : Albert
    Prenom     : Claude
    Autres     : Information 1 : aaa
    	     Information 2 : bbbbbb
    	     Information 3 : cccc
    Mais moi j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Nom        : Albert
    Prenom     : Claude
    Autres     : Information 1 : aaa
    Information 2 : bbbbbb
    Information 3 : cccc
    La méthode getOtherInfos() peut être appelée sans être précédée de l'affichage du Nom et Prenom. Donc, je ne peux pas rajouter des tabulations dans getOtherInfos().
    Auriez-vous une idée ? Est-ce possible de faire une tabulation sur un bloc entier de lignes dans cout ?

    J'ai déjà regardé du côté de setw et setfill mais ça n'arrange pas mon problème vu que je ne peux pas modifier getOtherInfos() dynamiquement..


    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    passer un paramètre à getOtherInfos ne serait-il pas possible ?
    Simple et suffisant.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Par défaut
    J'aimerais tant ^^ Mais non ce n'est pas possible
    Et rien que l'idée de devoir toucher à la position du curseur dans la console m'hérisse les poils ^^'

  4. #4
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    En théorie, '\n' qui est envoyé par std::endl signifie "va à la prochaine ligne en laissant le curseur dans la même position", c'est-à-dire qu'il ne remet le curseur à gauche.
    Dans la pratique, '\n' est systématiquement transformé en "va à la prochaine ligne ET remet le curseur à gauche".

    Peut-être il y a moyen de rétablir ce comportement en jouant avec les std::ostream dont std::cout en est une instance.

    Ça demande quelques recherches.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Par défaut
    Je suis justement en train de regarder ^^ Je me demandais si il n'y avait pas possibilité de modifier le comportement de endl entre deux cout.. Mais rien de bien probant ni qui fonctionne:s

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Par défaut
    C'est bon, j'ai trouvé une méthode de bras cassés..

    La méthode :
    * Je met personne.getOtherInfos() dans un stringstream
    * Je récupère les lignes du stringstream à coups de getline(stringstream, buffer, '\n')
    * Pour chaque ligne, je fais un cout << "\t" << buffer << endl;

    Si vous avez une meilleure solution, je suis ouvert

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/12/2011, 17h22
  2. Texte sur plusieurs lignes dans un TListBox
    Par BigBenQ dans le forum Composants VCL
    Réponses: 1
    Dernier message: 04/05/2006, 17h58
  3. Texte sur plusieurs lignes dans une cellule de JTable
    Par JeanECN dans le forum Composants
    Réponses: 3
    Dernier message: 10/04/2006, 17h20
  4. [jtable] Champs texte sur pls ligne dans cellule
    Par doudine dans le forum Composants
    Réponses: 8
    Dernier message: 17/11/2005, 12h36
  5. Réponses: 2
    Dernier message: 21/09/2005, 12h18

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