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++

Vue hybride

Antoine_935 char[] et initialisation 07/09/2006, 18h23
roulious Ca ne marche pas puisque ton... 07/09/2006, 18h45
Laurent Gomila strncpy(tokens, " ;(),....",... 07/09/2006, 18h46
Julius_Dev et si tu veux rester avec des... 07/09/2006, 19h05
Luc Hermitte Ton token, c'est bien un truc... 07/09/2006, 23h25
Kurisu Julius_Dev> si tu veux... 08/09/2006, 10h16
Message précédent Message précédent   Message suivant Message suivant
  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