Partage
  • Partager sur Facebook
  • Partager sur Twitter

Initialiser une chaine char avec un const char

    23 avril 2006 à 12:29:36

    Bonjours je travaille sur une fonction.
    On envoi a cette fonction une chaine de caractère.
    Elle attend comme argument un const char *.
    Le Problème c'est que je veux initialiser une chaine de caractère avec le const char.
    Hors il me dit:
    incompatible type in assignement of 'const char*' to 'char*[40]'.
    Que faire?

    Code:

    char * buffer[40];

    void C_ParcPlayer::AjoutBuffer(const char* Buffer)
    {

            buffer=Buffer;//le problème est ici

    }

    Merci de votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      23 avril 2006 à 12:32:01

      Le design du truc est foireux, trouve une solution plus cohérente comme allouer un buffer dynamiquement pour contenir ta chaine copiée.
      • Partager sur Facebook
      • Partager sur Twitter
        23 avril 2006 à 12:37:35

        le design du truc??? Quel truc? allouer un buffer dynamiquement???
        J'ai rien compris >< dynamiquement c'est un mot vague...
        • Partager sur Facebook
        • Partager sur Twitter
          23 avril 2006 à 12:39:54

          Oui et puis j'ai du mal à en croire mes yeux.
          Si je ne m'abuse tu fais du C++ hein ?
          Utilise des std::string ntidyiu.
          Sauf cas très rare (et mauvaise connaissance des possibilités de la stl) tu n'as pas à utiliser de char * en C++ ; des const char * en appel de méthode à la limite, mais c'est tout.
          • Partager sur Facebook
          • Partager sur Twitter
            23 avril 2006 à 12:46:08

            Ouai mais j'ai rien compris au string...
            • Partager sur Facebook
            • Partager sur Twitter
              23 avril 2006 à 13:00:58

              Qu'est ce que tu n'as pas compris ? o_O
              N'hésites pas à demander mais tu y trouveras plus de fonctionnalités que les char * et l'aspect dynamique, affectation, simplifié.
              • Partager sur Facebook
              • Partager sur Twitter
                23 avril 2006 à 13:10:58

                Ok j'ai éssayé de faire ça avec les string.
                Ca marche mais j'ai peu d'avoir des problème de compatibilité?
                Par contre quand je veu vider m'a chaine ça affiche une erreur...

                std::string buffer;

                void C_ParcPlayer::AjoutBuffer(const char* Buffer)
                {

                buffer=Buffer;
                buffer=0;//le problème est ici
                }

                erreur: ambigous overload for 'operator=' in 'pBTemp->C_Player::bufferss = 0'

                De plus j'utilise winsock pour les socket, si j'envoi un string au lieu d'un char, il y aurra un problème? Et en reception je receverai un char *? C'est que je veux savoir si je doit faire des modification coter client
                • Partager sur Facebook
                • Partager sur Twitter
                  23 avril 2006 à 13:16:18

                  Vidér la chaine : .clear() ou affectation à ""
                  Convertir en char * : c_str()
                  De char * en string : implicite, affectation suffit.
                  Mais si winsock travaille avec des buffers char * alors oui je crains qu'il faille que tu en utilises quelques uns car la méthode c_str() est en lecture seule.

                  Pour en revenir à ton problème donc :
                  char * buffer[40]; => char buffer[40]
                  et pas d'affectation directe, utilise strcpy.

                  Tant pis :'(

                  Edit : tu peux ptet aussi voir du coté de http://www.cplusplus.com/src/
                  CWinTcpSocket C++ Winsock wrapper class. Tom Lee
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 avril 2006 à 13:21:07

                    Ok Merci je vais éssayer tout cela.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 avril 2006 à 15:15:19

                      Bon j'ai parlé avec mon pote C++ien Mackila :) Il m'a montré une technique à base de streambuff, c'est trop de la balle mais pas de ton niveau je pense.
                      Donc dans ton cas contente toi d'utiliser des char * correctement ça ira bien.
                      Le lien que je t'ai filé semble être un wrapper plus que bidon laisse tomber.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Initialiser une chaine char avec un const char

                      × 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