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 :

Tableau de String


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Par défaut Tableau de String
    Bonjour,

    J'en ai assez de me prendre la tête à chercher partout une réponse à mon problème (certainement très simple) de tableaux, aussi j'en appelle à la communauté pour m'aider.

    Sauf erreur et autant que je m'en souvienne, en Java, l'on peut faire ceci:
    String variableNom[3] = {"abcd","efgh","ijkl"};

    Impossible de faire la même chose en C++ sous Builder 6.

    Réponse du prog: variableNom [0] = 8795436, variableNom [1] = 8795456, variableNom [2] = 8795476

    Quelqu'un pourrait-il m'expliquer ce résultat ?
    et
    Comment faire pour initialiser un tableau avec des Strings?

    J'ai aussi cherché vainement un petit cours ou tuto sur les tableaux en C++... (je pense que j'en ai bien besoin.. ) pouvez-vous m'indiquer un lien sur ce sujet.

    D'avance merci.

    Claude

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    Euh... Tu nous parles de System::String (.Net), de std::string (C++ standard) ou d'un type String propre à BCB ?

    Et comment les affiches-tu ?
    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.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Pour des infos sur les chaines de caractères en C++ => ICI

    Mais comme le dit médinoc, il existe aussi d'autres types de String non standards.

    Sinon pour moi, pour initialiser un tableau de string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <string>
     
    string tabString[] = {"un","deux","trois"};
    Mais je n'ai pas testé...

  4. #4
    Membre éclairé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Par défaut
    Il s'agit du C++ Standard.
    Et comment les affiches-tu ?
    printf(" jeu 0 = %d\n",jeux[0]);
    printf(" jeu 1 = %d\n",jeux[1]);
    printf(" jeu 2 = %d\n",jeux[2]);
    ---------------------------------

    j'essaie de suite la méthode "NicolasJolet" et je vous tiens au courant.
    mais peut-être ai-je tout simplement oublié #include<string>

    @++ et en attendant merci & bravo pour votre réactivité.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    1. std::string est une classe : On ne peut afficher une classe avec printf(), sauf si elle est prévue pour ça (comme la CString de MFC, qui ne contient qu'un TCHAR *, le reste de ses données étant planquées).
    2. Tu essaies d'afficher des chaînes avec %d...
    3. En C++, on utilise les streams: std::cout << jeux[0] << std::endl;
    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.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Et comment les affiches-tu ?
    printf(" jeu 0 = %d\n",jeux[0]);
    printf(" jeu 1 = %d\n",jeux[1]);
    printf(" jeu 2 = %d\n",jeux[2]);
    Plusieurs remarques :
    • Pour afficher une chaine de caractère avec printf, que ça soit du C ou C++, j'utiliserai plutot %s et non %d, mais tu parles peut-être ici d'integers.
    • En C++, on utilise de préférence les flux :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      cout << " jeu 0 = " << jeux[0] << endl;
      ...
    • D'autant plus, si tu utilises le type string standard, printf ne conviendra plus vu que la chaine n'est pas censée être contigüe en mémoire (à moins d'utiliser la méthode : .c_str())



    [EDIT]Trop lent

  7. #7
    Membre éclairé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Par défaut
    Et bien non, je n'avais pas oublié le #include<string>

    Vérifications faites = idem... je ne comprends pas!

    Voila le petit bout de prg:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void Cartes::distribution(){ 
     
    String jeux[]={"abcd","efgh","ijkl","mnop"};
     
    printf("  jeu 0 = %d\n",jeux[0]);
    printf("  jeu 1 = %d\n",jeux[1]);
    printf("  jeu 2 = %d\n",jeux[2]);
    }
    résultat (sous console):
    jeux [0] = 8795436
    jeux [1] = 8795456
    jeux [2] = 8795476


    .....................

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    As-tu lu nos réponses? (Celles qui sont identiques)

  9. #9
    Membre éclairé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Par défaut
    Je suis en train de les lire, mais surtout d'essayer de comprendre correctement.
    Je vous tiens au courant de la suite...

    merci

  10. #10
    Membre éclairé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Par défaut
    Grand pour votre aide qui va me permettre de remettre de l'ordre (je l'espère) dans mes idées.

    En fait, plusieurs Bugs.
    1/ le "s" de string de "string jeux[]", s'écrit avec un petit s et non un S majuscule.
    2/ il faut effectivement afficher le résultat avec cout.
    3/ ne pas oublier de déclarer : #include <iostream> et using namespace std.


    Ce n'est pas un lien sur la Fac que je souhaitais, mais plus sur un cours ou tuto sur les tableaux...


    Je n'ai pas compris le ? ?
    ou ai-je buggé...

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    3/ et aussi #include <string>.

    Pour le smiley : On l'utilise pour gueuler sur quelqu'un qui n'a pas mis de balise [ code ] autour de ses fragments de code source.
    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.

  12. #12
    Membre éclairé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Par défaut
    OK, merci, j'ai compris pour le .

    Et-ce que le #include<string> fait partie de #include <vcl.h>... parce que j'ai retiré include<string> et ça fonctionne quand même...

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Je ne connais pas cet include, mais sinon tu fais une simple recherche dedans pour être fixé
    De toute façon tu peux laisser le #include <string> même s'il est inclus dans vcl.h, ça t'évitera des erreurs si tu l'enleves par la suite...

  14. #14
    Membre éclairé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Par défaut
    vcl et clx sont 2 bibliothèques de classes fournies avec C++Builder.

  15. #15
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    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 287
    Par défaut
    Ca ne devrait pas passer avec printf. Il est possible que cela soit une extension propriétaire de ton outil.
    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...

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

Discussions similaires

  1. Tester si une String fait partie d'un tableau de String
    Par laloi dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 23/04/2005, 16h47
  2. [J2SE] tableau de string
    Par Jules82 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 17/03/2005, 14h35
  3. Ranger un tableau de String dans ma HashMap
    Par jeyce dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 26/08/2004, 22h41
  4. [Collections] Conversion de Vector en tableau de String
    Par java_math dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 06/06/2004, 12h55
  5. [Collections] Tableau de String
    Par gexti dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 02/06/2004, 15h42

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