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 Expert

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    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
    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.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre Expert

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    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 déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 287
    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 287
    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 Expert

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    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, 17h05
  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, 19h20
  3. Réponses: 4
    Dernier message: 28/03/2005, 12h37
  4. Réponses: 9
    Dernier message: 03/12/2004, 11h35
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

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