Partage
  • Partager sur Facebook
  • Partager sur Twitter

int->string ???

Sujet résolu
    1 août 2007 à 15:49:29

    bonjour tout le monde,

    J'ai juste une petite question :
    Commen faire pour convertir un int en string ???

    Edit 2: Petite presision j'ai plusieur variable int et je veu en faire une chaine string (Le tout se trouvan dans une methode).

    Asibasth:
    Merci pour ta reponce mais a mon avi il doit i avoir une fonction propre a c++ pour le faire


    merci d'avance pour vos reponce.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      1 août 2007 à 15:59:30

      avec les flux style ostringstream (je ne sais plus lequel exactement)
      edit : http://c.developpez.com/faq/cpp/?page=strings#STRINGS_numtostr
      • Partager sur Facebook
      • Partager sur Twitter
        1 août 2007 à 16:03:47

        Je dirais un truc du genre ça (pas testé) :

        #include <sstream>

        // code ...
        std::ostringstream oss;
        oss << "Test: " << 0 << " + " << 2 << " = " << 2 << std::endl;
        std::string s = oss.str();
        //code...
         
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          1 août 2007 à 16:04:00

          <image>

          #include <sstream>
          #include <iostream>

          using namespace std;

          int main(void)
          {
          ostringstream s1;
          int i = 22;
          s1 << i << endl;
          string s2 = s1.str();
          cout << s2;

          return 0;
          }
           


          Edit : t'aint Grilled !! :colere2:
          • Partager sur Facebook
          • Partager sur Twitter
            1 août 2007 à 16:28:36

            pourquoi le endl? le but est d'avoir une copie de l'origine en string... donc sans nouvelle ligne...

            tu peux facilement mettre ça dans une fonction template ce qui est très utile dans beaucoup de projets
            1. // fichier ConversionChaineEtTemplate.h
            2. #include <sstream>
            3. #include <string>
            4. // ttos : Template TO String
            5. // transforme tout objet en string tant que
            6. // l'opérateur << vers un flux en sortie est
            7. // défini pour la classe
            8. // INTRANTS : T t : objet à transformer
            9. // EXTRANTS : string : chaîne résultante
            10. template<typename T>
            11. string ttos( T t )
            12. {
            13.    std::stringstream ss;
            14.    std::string s;
            15.    ss << t;
            16.    ss >> s;
            17.    return s;
            18. }
            19. // stot : String TO Template
            20. // Permet de transformer une chaine en objet
            21. // si l'opération est possible grace à
            22. // l'opérateur >>
            23. // Si l'objet envoyé est suceptible de
            24. // lancer une exception dans le cas d'une
            25. // lecture infructueuse veuillez
            26. // l'attraper
            27. // INTRANTS : string s : la chaine à transformer
            28. // EXTRANTS : T : l'objet formatté
            29. template <typename T>
            30. T stot( std::string s )
            31. {
            32.     std::stringstream ss( s );
            33.     T t;
            34.     ss >> t;
            35.     return t;
            36. }

            1. // Exemple
            2. #include <string>
            3. #include <iostream>
            4. #include "ConversionChaineEtTemplate.h"
            5. int main()
            6. {
            7.     int entier = 10;
            8.     double reel = 11.111;
            9.     std::string chaine = "8934";
            10.     int entier_reception = 0;
            11.     std::string chaine_reception;
            12.     entier_reception = stot<int>( chaine ) - 34;
            13.     chaine_reception = ttos( entier ) + " et " + ttos( reel );
            14.     std::cout << "entier_reception = " << entier_reception << std::endl;
            15.     std::cout << "chaine_reception = " << chaine_reception << std::endl;
            16.     return 0;
            17. }

            Sortie :
            entier_reception = 8900
            chaine_reception = 10 et 11.111


            Bon moi aussi mon code n'est pas testé mais de mémoire c'est pas vraiment loin de ça ;)

            <EDIT>Je viens de me rendre compte 3 mois plus tard que j'utilisait un "using namespace ..." dans un fichier d'en-tête : C'est corrigé

            J'ai aussi ajouté un petit exemple d'utilisation</EDIT>
            • Partager sur Facebook
            • Partager sur Twitter
              1 août 2007 à 19:12:06

              Citation : delroth

              Je dirais un truc du genre ça (pas testé) :

              #include <sstream>

              // code ...
              std::ostringstream oss;
              oss << "Test: " << 0 << " + " << 2 << " = " << 2 << std::endl;
              std::string s = oss.str();
              //code...
               


              Nikel sa marche a la perfection ^^ en enlevan std::endl

              Merci
              • Partager sur Facebook
              • Partager sur Twitter

              int->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