Partage
  • Partager sur Facebook
  • Partager sur Twitter

Concatenation de pur Débutant...

Vraiment désolé pour cette question mais...

Sujet résolu
    25 juin 2007 à 12:12:08

    Bonjour à tous !

    Voila, une question vraiment simple mais que j'arrive pas à trouver. :p

    Je n'arrive pas à concatener simplement dans un string, une chaine de caractères ainsi qu'une variable, le tout avec l'opérateur " + "

    En fait, je veux optimiser toutes mes lignes :

    string LeTout, Var1 = "Salut ";
    Letout = Var1;
    LeTout += "toi !";


    Par :

    string LeTout, Var1 = "Salut ";
    Letout = Var1 + "toi !";


    Voila, si quelqu'un à envie de se foutre de moi... (en m'y apportant la soluce en même temps :-° )

    Merci !
    • Partager sur Facebook
    • Partager sur Twitter
      25 juin 2007 à 12:21:23

      Citation : Defaite

      Voila, si quelqu'un à envie de se foutre de moi...



      Je vois pas l'intérêt, on a tous été débutant.

      Sinon, je te propose ça:


      string LeTout = "Salut toi!";


      Mais c'est pas ce que tu veux faire, sinon y a ça avec une variable:


      string Var1 = "Salut ";
      string LeTout = Var1 + "toi !";


      ou encore:


      string Var1("Salut "),LeTout(Var1 +" toi!");


      a toi de voir, y a encore plein d'autre possibilités.

      Mais parfois, le code le plus court (en nombre de lignes) n'est pas forcément le plus rapide ni le plus clair.
      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
        25 juin 2007 à 12:38:26

        Salut Nanoc et merci de ta réponse rapide.

        J'ai donné un tout petit code pour faire court mais ce n'est pas dans la déclaration que je veux ajouter le " toi !".

        En fait, lors d'une requete dans une base SQL par exemple, on recoit des données par colonnes, je veux donc concatener des colonnes en ajoutant des caractères "!" genre :

        Reponse = row[0];
        Reponse += "!";
        Reponse += row[1];
        Reponse += "!";
        Reponse += row[2];
        Reponse += "!";
        // etc etc...


        Et j'aurais voulu pouvoir le faire en une seule ligne :

        Reponse = row[0] + "!" + row[1] + "!" + row[2] + "!";


        Par ce qu'à force, ca devient pénible...
        • Partager sur Facebook
        • Partager sur Twitter
          25 juin 2007 à 15:32:06

          Et j'aurais voulu pouvoir le faire en une seule ligne :

          Reponse = row[0] + "!" + row[1] + "!" + row[2] + "!";



          -------------------------------

          Eh bien pourquoi tu ne le fais pas, c'est tout à fait autorisé

          • Partager sur Facebook
          • Partager sur Twitter
          Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
            25 juin 2007 à 15:42:59

            Parce que :

            erreur : invalid operands of types <<char*" and <<const char [2]" to binary <<operator+"
            • Partager sur Facebook
            • Partager sur Twitter
              25 juin 2007 à 16:59:50

              ah je vois,

              tes row[i] ne sont ni des string ni des char, donc ça ne peut pas marcher.
              Dans ce cas il faut utiliser un flux.


              #include <sstream>

              ostringstream flux;
              flux << row[0] << '!' << row[1] << '!' << row[2] << '!' ;
              string Reponse = flux.str();


              ou encore mieux avec une boucle for pour éviter une copie inutile de code:


              #include <sstream>

              ostringstream flux;

              for(int i=0;i<3;++i)
              {
              flux << row[i] << '!';
              }

              string Reponse = flux.str();
              • Partager sur Facebook
              • Partager sur Twitter
              Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                25 juin 2007 à 19:53:12

                et si on fait string nom[5]
                ca ne mar marcherait pas??
                • Partager sur Facebook
                • Partager sur Twitter
                  26 juin 2007 à 0:54:05

                  Citation : Nanoc

                  ah je vois,

                  tes row[i] ne sont ni des string ni des char, donc ça ne peut pas marcher.
                  Dans ce cas il faut utiliser un flux.


                  #include <sstream>

                  ostringstream flux;
                  flux << row[0] << '!' << row[1] << '!' << row[2] << '!' ;
                  string Reponse = flux.str();



                  ou encore mieux avec une boucle for pour éviter une copie inutile de code:


                  #include <sstream>

                  ostringstream flux;

                  for(int i=0;i<3;++i)
                  {
                  flux << row[i] << '!';
                  }

                  string Reponse = flux.str();


                  ? Pourquoi un flux ?

                  std::string reponse = std::string(row[i]) + '!' + row[1] + '!' + row[2];


                  etc.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 juin 2007 à 0:59:24

                    Si tes char[2] ont une longueur max de 1 et sont 0-terminées, un simple
                    std::string(row[0]) + "!" + row[1] + "!" + row[2] + "!"

                    fera l'affaire.

                    Concernant la boucle et les stringstream, il y a aussi:
                    std::copy(
                        &row[0], &row[3],
                        std::ostream_inserter<std::string>(oss, "!"));
                    • Partager sur Facebook
                    • Partager sur Twitter
                    C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                      26 juin 2007 à 9:49:48

                      Haaa Supeeeer !!

                      Un simple std::string(row[i]) marche !

                      Merci à tous !
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Concatenation de pur Débutant...

                      × 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