Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affichage de string avec cout

Sujet résolu
    5 décembre 2018 à 20:43:16

    Bonjour/Bonsoir,

    Voilà, je viens vers vous car cela fait quelques heures que je recherche la solution. Voilà, je reprend l'étude du C++ via les tutoriel de ce site mais je me retrouve bloqué à un moment.

    Voilà, je commence à rejouer avec les vecteurs afin de réalisé le petit jeu du mot mystère, tout ce passe à merveille sauf au moment où je souhaite faire l'affichage de mon menu via les vecteurs et l'instruction cout.

    Voici l'instruction qui me pose problème:

    for (int i = 0; i < (int)mName.size(); i++)
    
    	{
    
    		//cout << i << "\n";
    
    		cout << mName[i] << "\n";
    
    	}

    Pour être plus précis, c'est à la ligne: cout << mName[i] << "\n"; qui pose problème. En faite la variable mName est un vecteur de type string don voici la définition dans mon fichier de code comme vecteur globale: vector<string> mName;

    Mon compilateur me trouve donc une erreur (cf: photo en dessous) que je ne comprend pas et que je n'arrive pas à corriger alors que tout le reste du code fonctionne à merveille.

    Erreur

    J'ai essayer de faire un cast en utilisant la ligne cout << (char)mName[i] << "\n"; mais cela ne sert à rien non plus.

    J'espère que vous saurez rapidement m'aider à régler ce petit problème.

    Bien à vous;

    Fred.

    • Partager sur Facebook
    • Partager sur Twitter
    La vie n'est pas un long fleuve tranquile
      5 décembre 2018 à 20:53:51

      A priori, ca devrait fonctionner, le code semble correct. Tu n'aurais pas oublié les include de iostream ou de string ?

      Et sinon, n'utilises pas "using namespace std". Et preferes les range for loop pour parcourir un tableau complet

      for (auto const& name: nName) 
      {
         std::cout << name << std::endl;
      }

      Et "mName" n'est probablement pas un bon nom de variable, on ne sait pas que c'est un tableau. "mNames" par exemple serait mieux, pour montrer que c'est plusieurs noms.

      • Partager sur Facebook
      • Partager sur Twitter
        5 décembre 2018 à 21:08:40

        Merci gdbdiverr.

        En effet, j'avais oublier d'inclure string lol.

        Par contre je ne comprend pas ce que tu veux dire par ta boucle for, en faite, je ne comprend pas trop à quoi peu servir la ligne "auto const& name : mName"?

        name est, dans ce cas un type et mName est la variable de ce type, c'est bien ça? Et que signifie le auto?

        Le changement de mName en mNames est peut être pas mal du tout en effet pour faire savoir que c'est un tableau. Je vais changer cela aussi lol

        • Partager sur Facebook
        • Partager sur Twitter
        La vie n'est pas un long fleuve tranquile
          5 décembre 2018 à 21:12:00

          for(auto const& name : mName)

          Peux se lire comme : pour chaque element (name) dont tu deduis le type ( auto ) dans ( : ) mName ..donc a chaque tour de boucle name prend le type et la valeur du prochain element.

          -
          Edité par CrevetteMagique 5 décembre 2018 à 21:12:36

          • Partager sur Facebook
          • Partager sur Twitter
            5 décembre 2018 à 21:15:22

            Ah oky. Et donc, cela veux dire que je ne m'ennuie plus avec la condition i < Manmes.syse() alors?
            • Partager sur Facebook
            • Partager sur Twitter
            La vie n'est pas un long fleuve tranquile
              5 décembre 2018 à 21:16:41

              FrédéricVanCaenegem a écrit:

              Ah oky. Et donc, cela veux dire que je ne m'ennuie plus avec la condition i < Manmes.syse() alors?

              Effectivement tu n'a plus a te preocuper des index et debordement : chaque tour de boucle 'name' aura la valeur du prochain element direct.

              edit :: au passage j'aime bien comment tu as ecris 'size' ( parce que reste que ca se pronnonce pareil :-° )

              -
              Edité par CrevetteMagique 5 décembre 2018 à 21:17:17

              • Partager sur Facebook
              • Partager sur Twitter
                5 décembre 2018 à 21:17:02

                <je suis trop lentttttt>

                Ok, donc mauvaise nouvelle : "auto" date de 2011, donc ton cours est probablement obsolete s'il n'en parle pas.

                "auto", c'est simplement de la déduction de type. Ca remplace un type :

                auto i { 0 };
                auto s { true };

                auto == int dans la première ligne, puisque 0 est un entier. Et auto == bool dans la seconde, puis que true est un bool.

                Aussi simple que ca.

                Pour le range for loop, c'est simplement "pour chaque element de la collection". "name" est un element de la collection "mName". Le code est :

                for (auto const& name: nName)
                {
                   std::cout << name << std::endl;
                }

                est équivalent au tien :

                for (int i = 0; i < (int)mName.size(); i++)
                {
                  string name = mName[i]; 
                  cout << name << "\n"; 
                }

                La variable name dans le for est l'element actuel dans le parcours du tableau.

                -
                Edité par gbdivers 5 décembre 2018 à 21:17:54

                • Partager sur Facebook
                • Partager sur Twitter
                  5 décembre 2018 à 21:19:59

                  gbdivers a écrit:

                  <je suis trop lentttttt>

                  Ok, donc mauvaise nouvelle : "auto" date de 2011, donc ton cours est probablement obsolete s'il n'en parle pas.

                  "auto", c'est simplement de la déduction de type. Ca remplace un type :

                  auto i { 0 };
                  auto s { true };

                  auto == int dans la première ligne, puisque 0 est un entier. Et auto == bool dans la seconde, puis que true est un bool.

                  Aussi simple que ca.

                  Pour le range for loop, c'est simplement "pour chaque element de la collection". "name" est un element de la collection "mName". Le code est :

                  for (auto const& name: nName)
                  {
                     std::cout << name << std::endl;
                  }

                  est équivalent au tien :

                  for (int i = 0; i < (int)mName.size(); i++)
                  {
                    string name = mName[i]; 
                    cout << name << "\n"; 
                  }

                  La variable name dans le for est l'element actuel dans le parcours du tableau.


                  Donc, en gros, je ne suis pas obligé d'utiliser cette forme de boucle mais c'est plus conseillé?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  La vie n'est pas un long fleuve tranquile
                    5 décembre 2018 à 21:21:21

                    FrédéricVanCaenegem a écrit:

                    gbdivers a écrit:

                    <je suis trop lentttttt>

                    Ok, donc mauvaise nouvelle : "auto" date de 2011, donc ton cours est probablement obsolete s'il n'en parle pas.

                    "auto", c'est simplement de la déduction de type. Ca remplace un type :

                    auto i { 0 };
                    auto s { true };

                    auto == int dans la première ligne, puisque 0 est un entier. Et auto == bool dans la seconde, puis que true est un bool.

                    Aussi simple que ca.

                    Pour le range for loop, c'est simplement "pour chaque element de la collection". "name" est un element de la collection "mName". Le code est :

                    for (auto const& name: nName)
                    {
                       std::cout << name << std::endl;
                    }

                    est équivalent au tien :

                    for (int i = 0; i < (int)mName.size(); i++)
                    {
                      string name = mName[i]; 
                      cout << name << "\n"; 
                    }

                    La variable name dans le for est l'element actuel dans le parcours du tableau.


                    Donc, en gros, je ne suis pas obligé d'utiliser cette forme de boucle mais c'est plus conseillé?

                    1 - plus rapide a ecrire
                    2 - tu te fais pas chier avec les indices

                    pourquoi s'en priver ? :)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 décembre 2018 à 21:22:06

                      Plus court. Plus lisible. Plus sur (pas d'erreur possible sur les indices).

                      EDIT : euh... c'est pas bientot fini de me faire passer pour un papy qui met 3 heures pour repondre ? Non mais ! 

                      -
                      Edité par gbdivers 5 décembre 2018 à 21:22:53

                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 décembre 2018 à 21:29:01

                        Ah oky, merci de vos conseille.

                        Juste une dernière question, cette fore de boucle est elle utilisable dans tout les cas ou juste dans ce genre de cas ci?

                        En tout les cas, un grand merci à vous deux pour vos réponses très intéressent et super utiles.

                        • Partager sur Facebook
                        • Partager sur Twitter
                        La vie n'est pas un long fleuve tranquile
                          5 décembre 2018 à 21:31:58

                          gbdivers a écrit:

                          Plus court. Plus lisible. Plus sur (pas d'erreur possible sur les indices).

                          EDIT : euh... c'est pas bientot fini de me faire passer pour un papy qui met 3 heures pour repondre ? Non mais ! 

                          -
                          Edité par gbdivers il y a 8 minutes

                          J'y ai meme pris un vilain plaisir :lol:


                          FrédéricVanCaenegem a écrit:

                          Ah oky, merci de vos conseille.

                          Juste une dernière question, cette fore de boucle est elle utilisable dans tout les cas ou juste dans ce genre de cas ci?

                          En tout les cas, un grand merci à vous deux pour vos réponses très intéressent et super utiles.

                          Tu peux utiliser la meme syntaxe pour n'importe quel collection de la stl.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 décembre 2018 à 21:33:44

                            Grand merci à vous deux encore ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                            La vie n'est pas un long fleuve tranquile
                              5 décembre 2018 à 21:34:18

                              'plaisir. N'oublis pas de mettre en resolu :magicien:


                              edit :: petite precision : le auto n'est pas obligatoire mais tres utile. Tu peux ecrire le type explicitement en gardant la meme syntaxe de boucle. Par exemple avec une liste d'entier :

                              for(int entier : listeEntier)

                              -
                              Edité par CrevetteMagique 5 décembre 2018 à 21:35:25

                              • Partager sur Facebook
                              • Partager sur Twitter
                                5 décembre 2018 à 21:38:49

                                Merci de cette dernière petit info Zérotisme.

                                Par contre, j'ai oublier comment je peu mettre en résolu. Je dois éditer mon premier poste? Cela fait un certains temps que je n'étais plus venu sur le site et encore moins le forum, honte à moi.

                                Edit, non, c'est bon, je viens de trouver. Quand on ne regarde pas lol

                                -
                                Edité par FrédéricVanCaenegem 5 décembre 2018 à 21:39:57

                                • Partager sur Facebook
                                • Partager sur Twitter
                                La vie n'est pas un long fleuve tranquile

                                Affichage de string avec cout

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown