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 :

Effacer le contenu d'un string a chaque passage dans une boucle


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Effacer le contenu d'un string a chaque passage dans une boucle
    Bonjour,
    J'ai un programme qui demande une série de 3 nombres saisi au clavier et les affiche ensuite dans un string et qui répète cette action 6 fois de suite.
    Le problème survient au moment de l'affichage lorsque le programme ne m'affiche pas seulement le string de la boucle qu'il vient de faire mais aussi le string des boucles précédentes
    J'ai essayé avec un "str.erase()" après l'affichage du string mais rien n'y fait :/

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    int main()
    {
        int i (0) ;
        int  R ;
        int V ;
        int B ;
        stringstream concatenation;
        string resultat;
     
        for (i=0;i<6;i++)
        {
            cout << "  -- Couleur " << i+1 << " --" << endl ;
     
            cout << "Entrez l'intensite de rouge : " ;
            cin >> R ;
            while (R<0 || R>255)
            {
                cout << "Entrez une intesite de rouge comprise entre 0 et 255 : " ;
                cin >> R ;
            }
            cout << "Entrez l'intensite de vert : " ;
            cin >> V ;
            while (V<0 || V>255)
            {
                cout << "Entrez une intesite de vert comprise entre 0 et 255 : " ;
                cin >> V ;
            }
            cout << "Entrez l'intensite de bleu : " ;
            cin >> B ;
            while (B<0 || B>255)
            {
                cout << "Entrez une intesite de bleu comprise entre 0 et 255 : " ;
                cin >> B ;
            }
     
            cout << endl ;
            concatenation << "R : " << R << "  --  V : " << V << "  --  B : " << B ;
            resultat = concatenation.str() ;
            cout << resultat << endl << endl << endl ;
        }
    }
    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 126
    Points : 33 033
    Points
    33 033
    Billets dans le blog
    4
    Par défaut
    Salut,

    tu sais ce que font ces 2 lignes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    concatenation << "R : " << R << "  --  V : " << V << "  --  B : " << B ;
            resultat = concatenation.str() ;
    Si tu concatènes sans jamais la clean, forcément ça "s'accumule".

    Pourquoi déclarer les variables en dehors de la boucle ?
    Mieux vaut les déclarer le plus tard possible, dans leur portée la plus limitée.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse.
    Donc j'ai déclaré mes variables dans la boucle, mais toujours le même problème :/
    Je débute un peu en programmation, donc je ne connais pas très bien comment cela fonctionne au niveau de la concaténation.
    Saurais-tu me dire du coup, comment faire pour la clean, car j'ai essayé pas mal de formules trouvées sur internet mais rien de bien concluant :/

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Finalement j'ai réussi à trouvé, j'ai ajouté cette ligne à la fin de la boucle :

  5. #5
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 126
    Points : 33 033
    Points
    33 033
    Billets dans le blog
    4
    Par défaut
    A ce stade, on parle pas de langage ou quoi que ce soit, mais de logique...

    Y'a pas de magie en algorithmique, faut "juste dérouler" ce qui se passe.

    Tu as une chaine, et à chaque boucle tu rajoutes du contenu à la fin.
    Pas besoin d'être un guru en quoi que ce soit pour se rendre compte que tu ne la réinitialises jamais. En C++ il n'y a aucune action cachée.
    Et donc pour comprendre que "le programme ne m'affiche pas seulement le string de la boucle qu'il vient de faire mais aussi le string des boucles précédentes".

    Ensuite, y'a une doc accessible via n'importe quel moteur de recherche http://www.cplusplus.com/reference/s.../stringstream/

    Mais dans ton cas, y'a absolument aucune utilité de déclarer ses variables en dehors de la boucle, et la "vraie bonne" solution serait juste de déclarer les variables au bon endroit/moment.

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

Discussions similaires

  1. Mettre un écouteur sur chaque bouton dans une boucle
    Par BillGates62 dans le forum Général Java
    Réponses: 6
    Dernier message: 29/04/2014, 11h50
  2. Réponses: 2
    Dernier message: 24/04/2014, 10h39
  3. colorer chaque ligne dans une boucle
    Par E_HUGO dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/02/2010, 11h33
  4. Exécution d'une instruction à chaque passage dans une boucle
    Par monichou86 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/11/2009, 20h47
  5. effacer le contenu d'un div après un evenement et une temporisation
    Par cotede2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/04/2009, 18h41

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