IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

(Problème avec...) conversion de std::string en char


Sujet :

SL & STL C++

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut (Problème avec...) conversion de std::string en char
    J'ai créé une classe et j'ai un problème avec son constructeur. J'ai défini la classe et créé deux variables de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class Classe1
    {
    public:
    	Classe1(char name_[])
    	{
    		int a = 0;
    		while(a < 10)
    		{
    			name[a] = name_[a];
    			a++;
    		}
    	}
    	char name[];
    };
     
    Classe1 classe1_bonjour = Classe1("bonjour");
    Classe1 classe1_salut = Classe1("salut");
    Ensuite, j'ai tenté de créer un texte dans lequel se trouvait classe1_bonjour.name. Lors de l'execution du programme, le texte affiché n'était pas "bonjour", mais "bsalut", soit la première lettre de "bonjour" suivie de "salut". Est-ce que quelqu'un peut m'aider??

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    Tu dois spécifier la taille de name dans la déclaration de la classe.

    Pour plus de clarté, utilise un for au lieu d'un while.

    Pour instancier une classe, tu peux aussi écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Classe1 classe1_bonjour("bonjour");
    [/code]

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Gérer les chaînes de caractères de cette manière en C++, en plus d'être erronné et plein de failles, c'est vraiment se compliquer la vie pour rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <string>
     
    class Classe1
    {
    public :
     
        Classe1(const std::string& n) : name(n)
        {
     
        }
     
    private :
     
        std::string name;
    }; 
     
    Classe1 classe1_bonjour("bonjour");
    Classe1 classe1_salut("salut");

  4. #4
    Membre averti Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Points : 417
    Points
    417
    Par défaut
    Le top du top c'est quand même d'utiliser des std::string...
    tu aurais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class A
    {
        public :
            A(const std::string& Name);
            std::string Name;
     
    };
    A::A(const std::string& Name)
    {
        this->Name = Name;
    }
    Et voilà, c'est pas bien les char[] et les char*....
    Il y a des gars qui se sont cassé le ***, et qui ont été payé pour créér une class std::string autant s'en servir... non ?

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Merci, mais j'ai une erreur quand j'utilise cette méthode. Le compilateur ne veut pas le convertir en char pour une fonction:

    c:\documents and settings\moi\mes documents\visual studio 2005\projects\allegro\allegro\main.cpp(183) : error C2664: 'textprintf' : cannot convert parameter 6 from 'std::string' to 'const char *'
    No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
    Build log was saved at "file://c:\Documents and Settings\Moi\Mes documents\Visual Studio 2005\Projects\allegro\allegro\Debug\BuildLog.htm"

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    Essaye name.c_str() au lieu de name dans l'appel à textprintf.

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    c'est ce qu'il manqait

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion const std::string et const char * ?
    Par panthere noire dans le forum C++
    Réponses: 7
    Dernier message: 28/02/2011, 16h51
  2. conversion std::string -> unsigned char*
    Par acheo dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2010, 18h35
  3. Conversion de std::string en LPCWSTR
    Par Rodrigue dans le forum SL & STL
    Réponses: 11
    Dernier message: 16/05/2006, 16h33
  4. conversion d'un string en char *
    Par ferry.jules dans le forum C++Builder
    Réponses: 15
    Dernier message: 12/05/2006, 23h12
  5. problème de conversion int[x] --> string
    Par poussinphp dans le forum SL & STL
    Réponses: 2
    Dernier message: 17/08/2005, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo