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 :

[deb]Accéder aux caractères d'une string


Sujet :

C++

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut [deb]Accéder aux caractères d'une string
    Bonjour,
    Comme je l'ai dit, je me remets au c++ et j'ai actuellement un petit problème pour accéder au caractère d'une string.

    Le code a pour but de récupérer un vecteur de String puis de parcourir chaque String et afficher la String caractère par caractère (but pédagogique évidemment).

    Voici le code:
    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
    16
    17
    18
    19
    20
     
            //Mon_Parser est un objet qui contient le vecteur de String
            // La méthode GetContent retourne ce vecteur de String
            int size = Mon_Parser->GetContent().size();
            std::vector<String> Contenu = Mon_Parser->GetContent();
     
     
            for (  int i = 0; i < size; ++i ){
     
                   ListBox1->Items->Add("Taille:" + IntToStr(Contenu[i].Length()) );
                   if ((Contenu[i].Length())>0){
                   ListBox1->Items->Add("Ma ligne est: "+Contenu[i]);
                   ListBox1->Items->Add("Le premier caractère de la ligne est: "+Contenu[i][0]);
                   }
     
     
     
     
     
            }
    Cependant, quand je lance ce code, j'ai une grosse violation d'accès donc je pense que je fous en l'air la mémoire de ma string quand je veux accéder à un caractère a un moment, mais je comprends pas trop où ni pourquoi.

    Notez que si j'affiche seulemant la ligne et que je mets en commentaire l'affichage des caractères, ca ne plante pas (ce qui confirme mon idée que l'erreur vient de mon accès à un caractère de la String en question).

    voilà, si vous pouviez me filer un petit coup de main, ce ne serait pas de refus!
    Merci d'avance.
    Raideman.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    String n'est pas une classe C++, mais une classe du framework .NET. Si tu veux faire du C++, une chaîne de caractère s'écrit : std::string.

    Evite de mélanger les deux choses, c'est déjà assez dur séparément... Par exemple, je te conseille pour débuter de créer des projets C++, et non pas C++/CLI.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Concernant la classe String, je crois qu'elle existe nativement sous BCB sans passer par .NeT. (d'ailleurs je compile tres bien cette classe).

    J'ai juste besoin de comprendre l'histoire des Strings et leurs caractères ^^

  4. #4
    r0d
    r0d est actuellement connecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    Je suis d'accord avec JolyLoic. Tu mélanges ici plusieurs libs (STL et CLR), si l'on peut dire ça ainsi. Pourquoi ne pas utiliser de simpls std::string?

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Ouais je suis d'accord pour l'utilisation des différents librairies mais les librairies sont faites pour etre utilisées et dans ce cas , je vois pas trop de quelle manière ca peut poser soucis. Elles sont compatibles et par habitude j'utilise toujours String et les AnsiString de chez borland donc j'ai pas eu le réflexe d'en changer tout simplement.

    Mon problème est résolu d'ailleurs, cela venait du fait que le premier caractère d'une string est indicé à 1 et non à 0 et que donc quand je voulais afficher string[0], ca me lançait une violation mémoire...

    Bref voilou .

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

Discussions similaires

  1. Accéder aux caractères d'une chaine
    Par vinzoo91 dans le forum Général Python
    Réponses: 3
    Dernier message: 24/12/2009, 18h05
  2. accéder aux colonnes d'une table différemment
    Par fab_hendrix dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/08/2005, 20h20
  3. Réponses: 4
    Dernier message: 28/03/2005, 13h37
  4. Réponses: 9
    Dernier message: 03/12/2004, 12h35
  5. Réponses: 6
    Dernier message: 24/07/2003, 13h39

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