Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C++] Ajouter un int à la fin d'une string

    18 décembre 2005 à 0:46:20

    Bonjour

    J'aimerais savoir comment on ajoute un int à la fin d'un string. Je ne sais pas comment my prendre...

    Du genre que j'ai une variable x qui est une string et que je veux ajouter la variable y qui est un int à la fin, comment on fait ?

    Merci :D
    • Partager sur Facebook
    • Partager sur Twitter
      18 décembre 2005 à 1:41:09

      supputation:
      x .= (string)y;
      • Partager sur Facebook
      • Partager sur Twitter
        18 décembre 2005 à 1:43:40

            Result .= (string)rand1;


        In function `std::string CryptThis(std::string)':

        18 - expected unqualified-id before '=' token
        18 - invalid conversion from `int' to `const char*'
        18 - initializing argument 1 of `std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&amp;) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'
        • Partager sur Facebook
        • Partager sur Twitter
          18 décembre 2005 à 1:48:31

          :lol: j'ai dit une grosse connerie, il existe même pas ce type en C++ je crois
          bon je retourne au php^^
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            18 décembre 2005 à 8:44:32

            oui, ce n'est pas "string" mais "std::string" le type de données pour les chaînes en C++. Pour te répondre, il faut que tu convertisses ton entier en chaînes de caractères et que tu l'ajoutes à la chaîne déja existante.



            int tonEntier; //Ton entier
            char EntierConvertit[10]; //Ton entier une fois convertit en chaine

            sprintf(EntierConvertit, "%d", tonEntier); //Convertion...



            Maintenant le tableau de caractères "Entier convertit" contient le nombre convertit en chaînes de caractères. Il ne reste plus qu'a l'apposer à ta chaines de cractères déja existante.

            En espérant avoir été utile...
            • Partager sur Facebook
            • Partager sur Twitter
              18 décembre 2005 à 9:33:10

              Je connais pas trop la STL (si tu es en C++, tu peux utiliser la STL pour la gestion des chaines c'est plus pratique ).
              Ca doit faire un truc comme ca :

              using namespace std;
              string mystring= "Salut je suis une chaine de caractère";
              int n =15;
              mystring += n;

              Et pour les chaines de caractère en char* la solution de Guiloooo marche mais n'ajoute pas l'entier à la fin ( la chaine ne contient que l'entier après faut passer par strcat)
              • Partager sur Facebook
              • Partager sur Twitter
                18 décembre 2005 à 15:52:25

                Ça ne fonctionne pas, le int rajouté me donne un symbole perdu.
                • Partager sur Facebook
                • Partager sur Twitter
                  18 décembre 2005 à 17:31:21

                  :-°
                  Bah cherche dans la doc STL :D , je l'utilise très peu la STL.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 décembre 2005 à 18:28:55

                    Et elle est où la doc STL ? Moi je ne trouve quasi rien à propos du C++ sur le net sauf sur MSDN mais moi je n'aime pas cette documentation.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 décembre 2005 à 18:35:01

                      J'ai fait une fonction (qui marche :p ) qui permet d'ajouté un int a un string :

                      void addintstr(string &theString,int theNum) {
                              char temp[10];
                              sprintf(temp,"%i",theNum);
                              theString += buffer;
                      }

                      Pour l'utiliser :

                      int y = 2;
                      string phrase = "1 + 1 = ";
                      addintstr(phrase,y);
                      cout << phrase;

                      J'explique : phrase est passé en temps que référence a addintstr pour pouvoir le modifier a partir de la fonction.
                      'y' y est aussi passé pour pouvoir l'ajouté (logique ^^ )

                      Dans la fonction, on met 'y' dans une variable 'temp' char, qui est ensuite ajouté au string theString, et comme c'est une référence cela modifie aussi phrase.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 décembre 2005 à 18:40:50

                        #include <sstream>
                        #include <string>

                        using namespace std ;

                        //...

                        template<class T> anyToString(const T& t) {
                            ostringstream ss ;
                            ss << t ;
                            return ss.str() ;
                        }

                        //...

                        string phrase("1 + 1 = ") ;
                        int resultat(1+1) ;
                        phrase += anyToString(resultat) ;
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 décembre 2005 à 19:03:01

                          Okay et maintenant, comment on met par exemple un chiffre d'une string dans un int :-° ?

                          Merci ^^
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 décembre 2005 à 20:18:51

                            #include <sstream>
                            #include <string>

                            using namespace std;

                            //...

                            template<typename T>
                            bool stringToAny(const string & Str,T& t)
                            {
                                istringstream ss(Str);
                                return ss >> t != 0;
                            }

                            //...

                            string phrase = "2";
                            int nombre = 2;
                            nombre += stringToAny(phrase);
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 décembre 2005 à 5:24:15

                              Citation : Mackila

                              #include <sstream>
                              #include <string>

                              using namespace std ;

                              //...

                              template<class T> anyToString(const T& t) {
                                  ostringstream ss ;
                                  ss << t ;
                                  return ss.str() ;
                              }

                              //...

                              string phrase("1 + 1 = ") ;
                              int resultat(1+1) ;
                              phrase += anyToString(resultat) ;

                              Fonctionne pas ton truc, dès que je compile, ça plante.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 décembre 2005 à 7:08:13

                                Normal tu as modifié l'exemple :).
                                Pour récupérer un nombre dans une chaine tu peux utiliser sscanf :

                                char buf[512];
                                strcpy(buf,"1+1=");
                                int n1,n2;
                                /* sans gestion d'erreurs */
                                sscanf (buf,"%d+%d",&n1,&n2);
                                /* Avec gestion d'erreur */
                                /* sscanf, comme scanf retourne le nombre de valeurs lues, on a demandé 2 valeurs,
                                il doit nous retourner 2 donc si tout s'est bien passé */

                                if(sscanf(buf,"%d+%d",&n1,&n2)!=2)
                                {
                                    printf("Erreur. Chaine de caractère invalide\n");
                                    exit (EXIT_FAILURE);
                                }
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 décembre 2005 à 9:53:07

                                  sprintf() et atoi()

                                  sprintf() pour convertir un nombre en tableau de caractère
                                  atoi() pour convertir un tableau de caractère en int

                                  (La différence entre un tableau de caractère et une string ? La string à une taille dynamique et se termine par '\0' alors que le tableau de caractère a une taille fixe et ne se termine pas nécésairement par '\0' ;)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 décembre 2005 à 10:56:05

                                    Prefere strtol() à atoi() (en plus tu peux choisir la base ^^ ) :

                                    // [] = Taille defini par le compilateur lors de la compilation
                                    // IL faut donc assigner obligatoirement un string au tableau.
                                    char phrasechar[] = "23";
                                    // On convertis le nombre en long base 10
                                    long phrasel = strtol(phrasechar,NULL,10);
                                    printf("%ld",phrasel)
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    [C++] Ajouter un int à la fin d'une string

                                    × 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