Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C++] Convertir const char en char

sans nouvelle variable ?

    9 mars 2006 à 14:41:02

    [EDIT ] JE ME SUIS TROMPER DANS LE TITRE UN ADMIN PEUT IL CORRIGER MERCI

    Salut, j'ai un petit probleme, je souhaiterais faire passer un char en const char sans l'intervention d'une autre variblable

    Voila. Merci de bien vouloir m'éclairer
    • Partager sur Facebook
    • Partager sur Twitter
      9 mars 2006 à 18:50:36

      En un mot, tu veux "conster" une variable.

      Je ne crois pas que ça soit possible : une variable à un type, et ce n' est pas possible de lui faire changer de type.

      De toute façon, ce n' est pas logique.
      • Partager sur Facebook
      • Partager sur Twitter
        9 mars 2006 à 19:43:39

        [note : ce que je dis est sûrement applicable au C++ bien que ce soit du C]
        Bah : En vite fait : Ya pas d'intérêt ou du moins je ne vois pas ce que tu veux faire : Tu veux empêcher la modification d'une variable à partir d'un certain point ? Bah, c'est pas franchement possible en fait ; de toute façon, c'est à toi de ne pas la modifier, faut pas attendre que le langage surveille comment tu codes...
        Je veux dire : const indique que tu ne peux pas modifier la valeur de l'objet désigné, c'est un droit. Mais si maintenant tu as quelque chose de non const, tu as le droit de le modifier, tu n'es pas obligé.
        Une fois déclaré, un identificateur garde son type, même avec une autre variable, tu ne peux pas changer le type de celui-ci, tu ne feras que copier la valeur dans quelque chose de non modifiable (ce qui entre nous n'a pas grand intérêt, du moins je ne vois pas dans l'immédiat..).
        • Partager sur Facebook
        • Partager sur Twitter
          9 mars 2006 à 19:52:46

          tu peut eventuellement faire un code qui fait appele a une autre fonction const


          char ma_variable;
          //codecodecode
          const char ma–variablec = ma_variable;


          • Partager sur Facebook
          • Partager sur Twitter
            9 mars 2006 à 19:55:51

            En fait j'utilise une fonction qui doit sortir un "const char" et je suis obligé d'utiliser un type "char" en return :/ donc je voudrait le modifier juste avant de le rendre mais si possible sans utiliser de variable . Mais même avec une varible c'est impossible ?

            ca m'enbete un peu. Bien sur vosu allez me dire: change le type de ton char en const char mais si je fais ca des fonctions ne marcheront plus, la c'est l'engrenage :p

            Mais tant pis je ferais sans ^^
            Merci quand même

            EDIT : nacrotic c'est un tableau :/
            • Partager sur Facebook
            • Partager sur Twitter
              9 mars 2006 à 19:57:25

              C'est possible, mais illogique : pourquoi vouloir modifier une constante ?
              Tu peux utiliser const_cast<>() pour cast ta variable en const (ou non-const)
              Le premier parametre (entre les <>) est le type de la variable (un objets ou un pointeur ; comme long, int, char*, string, ...) et le 2e (entre les ()) est la variable elle même (Elle peut être soit const, soit non-const).
              Ex :
              // Transforme myConstpChar en une variable non–const de type char*
              myNotConstpChar = const_cast<char*>(myConstpChar);


              EDIT : j'ai refait mon post, je l'avais fais trop vite (Et puis connect qui lag en même temps)
              • Partager sur Facebook
              • Partager sur Twitter
                9 mars 2006 à 20:00:40

                Rien compris, tu peux pas mieux expliquer ?
                Une fonction ne renvoit pas de lvalue donc la notion de "const" n'est pas applicable, de toute façon, il est impossible de modifier une valeur retournée.

                Je ne vois pas le problème, explique plus clairement, code à l'appui si tu veux.

                char
                f(void)
                {
                const char a = 'x';
                return (a);
                }

                /* ... */

                char x;
                x = f();

                EDIT: Si c'est un tableau, ce n'est pas une variable de type char... Faut pas bouffer les infos hein...
                • Partager sur Facebook
                • Partager sur Twitter
                  9 mars 2006 à 20:10:20


                  const char *C_PlayerResource::GetClasse( int iIndex )
                  {
                          C_Classe *classe = GetGlobalClasse( index );

                          if ( !IsConnected( iIndex ) )
                                  return "non connecte";
                         
                          return m_szClasse[iIndex];
                  }
                  protected:
                  char    m_szClasse[MAX_PLAYERS+1];
                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 mars 2006 à 20:13:34

                    Bah si tu retournes un const char * c'est bien que tu ne donnes pas le droit d'écriture sur le contenu de la chaîne retournée, ya pas de mistère ; tu pourrais faire comme tif-tof dit mais c'est stupide. Si ta chaîne est effectivement accessible en écriture et que tu veux en donner le droit, faut mettre char * ; sinon, elle ne l'est pas et de toute façon, l'utiliser comme un char * serait une erreur.
                    En plus dans ton code, tu renvoit un char mais tu déclares le type const char *, ya pas comme un problème ?

                    tif-tof > Le créateur du C++ c'est BS, pas DS.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 mars 2006 à 20:26:12

                      Hmm, pourquoi faire une fonction alors qu'on en a une toute faite ? (Bon, je parle pour le C++, ensuite le C je sais pas)
                      De toute façon, les conversions const -> non-const sont illogique (et les non-const -> const inutile)

                      Citation : rz0

                      tif-tof > Le créateur du C++ c'est BS, pas DS.


                      :-°
                      * cours modifier *

                      PS : mystère s'écrit avec un y, pas un i ^^
                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 mars 2006 à 20:57:57

                        Citation : rz0


                        En plus dans ton code, tu renvoit un char mais tu déclares le type const char *, ya pas comme un problème ?



                        C'est justement mon probleme ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 mars 2006 à 21:33:49

                          J'ai pas saisi ce que tu veux concrètement faire...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            9 mars 2006 à 22:22:07

                            Supprime le const dans le retour de la fonction de ta classe et il n'y a ura plus de problème !
                            • Partager sur Facebook
                            • Partager sur Twitter

                            [C++] Convertir const char en 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