Partage
  • Partager sur Facebook
  • Partager sur Twitter

char*, cin et cout

entrer et imprimer un pointeur de char...

Sujet résolu
    6 décembre 2005 à 19:19:11

    Bonjour j'ai un petit probleme avec les char*. Je sait comment les déclarer mais quand je veut les faire rentrer par l'utilisateur ou les imprimer, la ca bloque un peu :o .

    using namespace std;

    int main()
    {
       char* ptext;
       
       cout << "Entrez une phrase: ";
       cin << ptext;      // probleme ICI

       cout << "Vous avez entré " << ptext;    // et LA

       return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      6 décembre 2005 à 19:21:16

      >> avec cin pas <<
      et utilise string plutot si tu fait du C++
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        6 décembre 2005 à 19:21:59

        Il faut allouer de la mémoire pour avoir une zone de mémoire où la chaîne sera stockée.

        En C : char* ptext = malloc(20 * sizeof(char));
        En C++ : char* ptext = new char[0]; ou alors utilises le type string qui est plus adapté pour des chaînes en C++.

        ;)
        • Partager sur Facebook
        • Partager sur Twitter
          6 décembre 2005 à 19:26:37

          ok pour l'allocation memoire merci... mais pour les string j'ai jamais utilisé... Un petit exemple?? :p Merci
          • Partager sur Facebook
          • Partager sur Twitter
            6 décembre 2005 à 19:43:02

            Pour utiliser les strings tu dois d'abord inclure la bibliotheque standard qui va avec : #include <string>

            Ensuite tu a deux methode pour declarer un string, soit tu utilise l'operateur d'affectation, soit tu utilise le constructeur ; je te donne les deux manieres :


            #include <string>

            string Str1 = "Bonjour";   //affectation

            string Str2( "Bonjour" );   //constructeur

            • Partager sur Facebook
            • Partager sur Twitter
              6 décembre 2005 à 19:45:19

              Ce n'est pas une affectation le premier mais une initialisation donc appel au constructeur implicite.
              • Partager sur Facebook
              • Partager sur Twitter
                6 décembre 2005 à 22:27:34

                #include <string>
                #include <iostream>

                using namespace std ;

                class String {
                private :
                        string contenu ;
                public :
                        // Affectation
                        String& operator=(const String& aCopier) ;
                        // Construction par defaut
                        String() ;
                        // Construction par copie
                        String(const String&) ;
                        // Destruction
                        ~String() ;
                        // Construction depuis un const char*
                        String(const char*) ;
                        // Affectation depuis un const char*
                        String& operator=(const char*) ;
                        // Ecriture dans un ostream
                        void ecrire(ostream& o) ;
                } ; // class string
                // Operateur pour l'écriture dans un ostream
                ostream& operator<<(ostream& o, String s) ;

                int main(int argc, char* argv[])
                {
                        cout << 1 << endl ;
                        String s1 ;
                        s1 = "1" ;
                        cout << 2 << endl ;
                        String s2("22") ;
                        cout << 3 << endl ;
                        String s3 = "333" ;
                        cout << 4 << endl ;
                        String s4 = String("4444") ;
                        cout << 5 << endl ;
                        String s5 = (String)"55555" ;
                        cout << 6 << endl ;
                        String tmp6("666666") ;
                        String s6 = tmp6 ;
                        cout << 7 << endl ;
                        String tmp7("7777777") ;
                        String s7(tmp7) ;
                       
                        cin.get() ;
                        return 0 ;
                }





                ostream& operator<<(ostream& o, String s)
                {
                        s.ecrire(o) ;
                        return o ;
                }

                // Affectation
                String& String::operator=(const String& aCopier)
                {
                        cout << "String& String::operator=(const String& aCopier)" << endl ;
                        contenu = aCopier.contenu ;
                        return *this ;
                }

                // Construction par defaut
                String::String()
                {
                        cout << "String::String()" << endl ;
                }

                // Construction par copie
                String::String(const String& s)
                        : contenu(s.contenu)
                {
                        cout << "String::String(const String& s)" << endl ;
                }

                // Destruction
                String::~String()
                {
                        cout << "String::~String()" << endl ;
                }

                // Construction depuis un const char*
                String::String(const char* s)
                        : contenu(s)
                {
                        cout << "String::String(const char* s)" << endl ;
                }

                // Affectation depuis un const char*
                String& String::operator=(const char* s)
                {
                        cout << "String& String::operator=(const char* s)" << endl ;
                        contenu = s ;
                        return *this ;
                }

                // Ecriture dans un ostream
                void String::ecrire(ostream& o)
                {
                        o << contenu ;
                }



                1
                String::String()
                String& String::operator=(const char* s)
                2
                String::String(const char* s)
                3
                String::String(const char* s)
                4
                String::String(const char* s)
                5
                String::String(const char* s)
                6
                String::String(const char* s)
                String::String(const String& s)
                7
                String::String(const char* s)
                String::String(const String& s)
                • Partager sur Facebook
                • Partager sur Twitter

                char*, cin et 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