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

C++ Discussion :

char[] et initialisation


Sujet :

C++

  1. #1
    Membre �m�rite
    Avatar de Antoine_935
    Profil pro
    D�veloppeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par d�faut char[] et initialisation
    Salut tout le monde.

    Question toute b�te:

    dans ma d�claration de classe, je mets ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    private:
        char tokens[10];
    et dans mon constructeur ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    this->tokens = {' ', ';', ',', '(', ')', '"', '\\', '{', '}', '#'};
    Bien entendu, c'est une erreur.
    Comment faire pour initialiser ce tableau d'un coup ? (pas de tokens[0] = ' ' etc...)

  2. #2
    Membre chevronn�
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    D�tails du profil
    Informations personnelles :
    �ge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par d�faut
    Ca ne marche pas puisque ton objet est deja cree et initialise au moment ou tu rentres dans le corps du constructeur. A part utiliser std::string, je ne vois pas de solution simple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <string>
     
    struct S
    {
      std::string tokens;
      S()
      : tokens(" ;,{}\"\\()#")
      {
      }
    };

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    strncpy(tokens, " ;(),....", 10);
    // (ou peu importe l'ordre des paramètres)
    Ou mieux :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    const std::string tokens = " ;(),....";

  4. #4
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    15
    D�tails du profil
    Informations personnelles :
    �ge : 44

    Informations forums :
    Inscription : Septembre 2006
    Messages : 15
    Par d�faut
    et si tu veux rester avec des char :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    char tokens[10];
    memcpy(&tokens, " ;(),....", 10*sizeof(char));

  5. #5
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Ton token, c'est bien un truc unique et immuable ?
    =>
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    struct T {
    private:
        static const char tokens[] ="{[};:/";
    };
    Accessoirement, pour ce genre de choses, j'ai tendance � pr�f�rer cacher compl�tement l'info dans l'unit� de traduction o� est d�fini le code de la classe. =>
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     // T.cpp
    #include T.h
     
    namespace { // espace de noms anonymes
        const char tokens[] ="{[};:/";
    }
    La marquer priv�e, c'est une exposition inutile qui peut induire des recompilations d� � des changements qui ne sont pas des changements d'interface. On peut aussi marquer priv� et d�porter la d�finition dans le .cpp.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  6. #6
    Membre �clair�
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Ao�t 2006
    Messages
    408
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activit� : Game Graphics Programmer
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Ao�t 2006
    Messages : 408
    Par d�faut
    Julius_Dev> si tu veux vraiment rester avec des chars, prends la fonction c_str() de std::string.

    Sinon, un simple
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char token[] = {'[', '}', ';', ':' , '/' };
    ferait tout aussi bien l'affaire.

Discussions similaires

  1. Initialiser tableau en fonction d'un char*
    Par Arnaud F. dans le forum D�buter
    R�ponses: 2
    Dernier message: 20/03/2009, 18h13
  2. fonction initialisation char*
    Par maxantz dans le forum C++
    R�ponses: 7
    Dernier message: 25/07/2007, 11h45
  3. Initialisation, const char *, malloc
    Par kromartien dans le forum C
    R�ponses: 8
    Dernier message: 17/06/2007, 23h53
  4. R�ponses: 9
    Dernier message: 24/05/2007, 16h05
  5. Pb d'initialisation de char*
    Par tsp dans le forum C++
    R�ponses: 2
    Dernier message: 28/03/2006, 10h12

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