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 :

[C++] string -> const char*


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 57
    Par défaut [C++] string -> const char*
    Bonsoir,

    j'aimerais créer en C++ (donc avec les new) un tableau 4D
    La première dimension serait de type int tandis que les 3 autres dimension seraient de type char*


    Pour 1 numéro je voudrais 3 char*

    exemple :

    [int numero1] [int numero2] [int numero3]
    [char* champ1.1] [char* champ2.1] [char* champ3.1]
    [char* champ1.2] [char* champ2.2] [char* champ3.2]
    [char*champ1.3] [char*champ2.3] [char*champ3.3]

    ca fait un bon moment que je suis dessus et je ne vois toujours pas comment faire :S


    Merci bien pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 44
    Par défaut
    OK si je comprends bien, en fait tu veut faire un tableau à une dimension dont chaque élément est un triplet de char*

    Donc (toujours si je comprend bien la question) il faudrait (possibilité, il y en a d'autre) définir une classe groupant 3 char* :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    class triplet
    {
    public:
        triplet(const char* c1 = 0,
                  const char* c2 = 0,
                  const char* c2 = 0)
        :    champ1(c1),
             champ2(c2),
             champ3(c3){}
     
        const char* champ1;
        const char* champ2;
        const char* champ3;
    }
    Ensuite plusieurs cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // Voici une table de taille fixe et prévu à la compilation
    triplet table[constante];
    // Accès au champ 1 de l'élement premier :
    table[0].champ1;
     
    // Autre méthode, pointeurs, fixé après coup.
    triplet table2 = new triplet[variable];
    //...
    delete[] table2;
     
    // Maintenant une table de taille variable
    std::vector<triplet> table3;
    table3.push_back(triplet("Salut", "Tout", "Le monde"));
    J'espère ne pas être à coté de la question
    ++

  3. #3
    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
    Rien compris.
    Je n'ai pas l'impression que l'on ait les mêmes définitions pour "tableau" et pour "dimension de tableau".

    Tu t'en servirais comment de ton truc ?


    EDIT: Si Syrmonsieur a bien compris ce que tu voulais faire, son code causera des gros ennuis relativement à la gestion de la mémoire. Là, ça passe car il n'utilise que des chaines constantes littérales dans son exemple.
    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...

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    il suffit de faire un tableau de tuple<int, std::string, std::string, std::string>

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 44
    Par défaut
    EDIT: Si Syrmonsieur a bien compris ce que tu voulais faire, son code causera des gros ennuis relativement à la gestion de la mémoire. Là, ça passe car il n'utilise que des chaines constantes littérales dans son exemple.
    En effet, pour éviter les problèmes, il vaudra mieux utiliser des std::string.
    Enfin, ça dépends de ce que tu veux faire...ça représente quoi au juste ? (ça m'aurait aider pour bien comprendre ta question, là je suis peut etre à coté...)


    ++

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    On ne peut pas utiliser autre chose qu'un type entier comme indice de tableau "tableau".
    Si tu veux indicer un tableau avec une chaîne, il te faut un tableau associatif.


    Ou bien, tu as mal dit ce que tu voulais et tu cherches plutôt un ensemble (genre std::set) de tuples (entier, chaine, chaine, chaine)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion const std::string et const char * ?
    Par panthere noire dans le forum C++
    Réponses: 7
    Dernier message: 28/02/2011, 15h51
  2. std::string ou const char*
    Par amineabm dans le forum Débuter
    Réponses: 14
    Dernier message: 01/02/2011, 10h12
  3. Réponses: 4
    Dernier message: 28/01/2010, 11h28
  4. Convertir String^ en const char*
    Par Sixdeux dans le forum C++/CLI
    Réponses: 3
    Dernier message: 22/05/2007, 09h58
  5. Réponses: 3
    Dernier message: 25/10/2006, 22h54

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