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 :

Séparer chaque caractere d'un string


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Par défaut Séparer chaque caractere d'un string
    Bonjour à tous,

    Ya t il un moyen à partir d'une chaine string de créer un tableau de char dans lequel il y aura une case
    pour chaque caractere de la chaîne? si oui que faut il faire?

    pour une case j'arrive a ca mais il y a évidemment des problemes de conversions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            string b;     
            vector<char> a;
            char lettre = b.substr(posLettre,1);
            a.push_back(lettre);

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Salut

    Tu n'utilises pas la bonne API, substr renvoie une chaîne et non pas un caractère. En C++11:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    std::string b = "Test de chaine";
    std::vector<char> a;
    a.reserve(b.size());
    for(char c : b)
      a.push_back(c);
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::copy(begin(b),end(b),back_inserter(a));
    Ou en C++03

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(size_t index = 0; index < b.size(); ++index)
      a.push_back(b[index]);
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::copy(b.begin(),b.end(),back_inserter(a));

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Par défaut
    Salut jblecanar,

    merci pour tes réponses. peux tu me détailler le fonctonnement de la premiere solution
    car je suis encore débutant en la matière et j'aime savoir ce que je marque dans mon programme.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 492
    Par défaut
    substr renvoir une chaine de caractère (std::string) et ton vecteur veut des char.

    Avec "for(char c : b)", il demande au compilateur de faire une boucle, qui utilise un itérateur qui commence à b.begin(), se termine à b.end() et de copier l'élément pointé par l'itérateur dans la variable c et de faire les truc entre "{...}' pour chaque itération.

    Le code tagué C++03 (donc code de "vieux") est plus simple pour un débutant n'ayant pas abordé les itérateurs.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,

    tout ce ci me semble bien inutile puisque string est déjà un tableau de char.
    C'est tellement déjà un tableau que l'operator[] est même présent!
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Par défaut
    Merci pour vos réponses, j'ai opté pour la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(size_t index = 0; index < b.size(); ++index)
      a.push_back(b[index]);
    même si c'est un "language vieux".

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/02/2007, 22h48
  2. [VBA-E] trouver caractere dans un string
    Par gigs dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/04/2006, 14h12
  3. [VB6] Récupérer chaque lettre d'un String
    Par DJBORIE dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/03/2006, 17h28
  4. pouvoir évaluer chaque caractere d'une chaine
    Par etarip dans le forum Langage
    Réponses: 4
    Dernier message: 08/11/2005, 01h31
  5. éliminer un caractere d'un string
    Par no-vice dans le forum Langage
    Réponses: 5
    Dernier message: 09/08/2002, 14h55

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