Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme du surement a un melange de type ...

...string et char

Anonyme
    6 juin 2006 à 18:15:41

    Bonjour a tous j'ai un probleme avec un bout de code c'est surement du au mélange de string et char enfin je le met et si vous trouvez le probleme faite le moi savoir merci :

    void* Box::SetCaractere(char atexte)
    {


        if(mtexte!='\0')
        {
            std::string texte;
            texte=atexte;
            ptexte=new string;
            ptexte=mtexte;
            delete[]mtexte;
            mtexte=new string;
            mtexte=ptexte;
            mtexte+=atexte;
        }


    }
    • Partager sur Facebook
    • Partager sur Twitter
      6 juin 2006 à 18:21:26

      Il nous faut plus d'information comme par exemple la définition de classe box par ce que:
      D'ailleurs on ne sais pas quel est ton problème: compilation, liaison, execution ?

      Juste un truc qui me parait bizarre:
      if(mtexte!='\0')
      alors que:
      mtexte=new string;

      Je comprend pas ce que c'est que ce test . Comment et pourquoi tu veux comparer un caractère à une chaîne de caractère .

      Décris ton problème plus précisemment .
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        6 juin 2006 à 18:26:55

        Euh ouai en fait j'ai commencé a vouloir créer une sorte de boite texte avec le sdl donc G créé un objet appelé box et au début j'utilisé des type char* et non string puis j'avez réussi a faire quelque chose avec une fonction de la SDL qui récupéré la touche appuyé codée en ASCII je crois mais le probleme c'était que mon a devenait q ... comme si j'avais un clavier ascii. Donc j'ai essayé avec une fonction qui récupéré les touche en unicode grace à un site : http://lazyfooproductions.com/SDL_tutorials/lesson24/index.php
        la j'ai eu besoin des string et voila ou j'en suit je m'enmele totalement. :S

        Pour le if c'est un texte car si mtexte est vide rien ne sert de faire un copie temporaire dans ptexte.


        je met la définition de mon bjet en entier :

        Box::Box()
        {
            mtexte=new std::string;
            mtexte = (string*)"";
            a=new int;
            z=new int;
            q=new int;
            w=new int;
            m=new int;
            *a=0;
            *z=0;
            *q=0;
            *w=0;
            *m=0;
        }

        Box::Box(char *atexte)
        {
            mtexte=new string;
            mtexte=(string*)atexte;
        }

        Box::~Box()
        {
            delete [] mtexte;
        }

        void* Box::AfficherCaractere(SDL_Surface *ecran)
        {
            SDL_Rect positionTexte;
            positionTexte.x=0;
            positionTexte.y=0;
            SDL_Surface *texteSurface=NULL;
            TTF_Font *police=NULL;
            police=TTF_OpenFont("font.ttf",10);
            SDL_Color textColor = { 0, 0, 0 };
            texteSurface=TTF_RenderText_Solid(police,(char*)mtexte,textColor);
            SDL_BlitSurface(texteSurface,NULL,ecran,&positionTexte);
            SDL_Flip(ecran);
        }

        char* Box::GetCaractere()
        {
            return (char*)mtexte;
        }

        void* Box::SetCaractere(char atexte)
        {


            if(mtexte!='\0')
            {
                std::string texte;
                texte=atexte;
                ptexte=new string;
                ptexte=mtexte;
                delete[]mtexte;
                mtexte=new string;
                mtexte=ptexte;
                mtexte+=atexte;
            }


        }

        ostream& operator << (ostream& os, Box aBox)
        {
            return os << aBox.GetCaractere();
        }

        • Partager sur Facebook
        • Partager sur Twitter
          9 juin 2006 à 23:01:21

          void* Box::SetCaractere(char atexte)
          {
              if(mtexte!='\0')  // mtexte est de type std::string ?
              {
                  std::string texte;
                  texte=atexte;
                  ptexte=new string;
                  //ptexte=mtexte;    // tu ne peux pas faire ça, il manque
                  *ptexte = mtexte    // l'opérateur de déréférencement
                  delete[] mtexte;    // vu ta comparaison plus haut, invalide aussi
                  mtexte=new string;  // mtexte serais un pointeur ?
                  mtexte=ptexte;      // apparement oui...
                  mtexte+=atexte;     // incompréhensible si c'est un pointeur
              }
          }

          Des noms trop proches, on comprend pas ce que tu cherches à faire... Bref, c'est nul.
          • Partager sur Facebook
          • Partager sur Twitter
            9 juin 2006 à 23:33:57

            Et puis même, ya plein d'incohérences.

            Pourquoi utiliser un pointeur vers un string ? Stockes ton string quelque part dans ta classe comme tu stockerais un int, c'est tout.
            On n'utilise pas un string comme on utiliserait un char*.

            Pour les comparaisons, comparer à '\0' ya dejà une erreur de type, parce que '\0' est un char, il aurait fallu mettre "\0".
            Et les string ne sont pas forcément terminées par un '\0', si tu veux savoir si ta string est vide, tu écris if (texte.empty()).

            Doc : http://www.sgi.com/tech/stl/basic_string.html
            • Partager sur Facebook
            • Partager sur Twitter

            probleme du surement a un melange de type ...

            × 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