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 :

Compter le nombre de caractere dans une chaine


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Par défaut Compter le nombre de caractere dans une chaine
    Je voudrais compter combien de fois le caractere ";" est repété dans une chaine string


    MERCI ET BONNE PROG :!!

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::string toto = "toto";
    int c = std::count(toto.begin(), toto.end(), 'o');
    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...

  3. #3
    Membre éclairé
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Par défaut
    Merci pour cette reponse clair et rapide !!

  4. #4
    Membre éclairé
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Par défaut
    Est il possible de limiter count a une certaine partie de la chaine ??

    Je voudrais par exemple compter les ; entre la position 8 et 21

    MERCI ET BONNE PROG !!

  5. #5
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    tu remplaces cette liogne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int c = std::count(toto.begin(), toto.end(), 'o');
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int c = std::count(8, 21, 'o');

  6. #6
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut
    Citation Envoyé par hiko-seijuro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int c = std::count(8, 21, 'o');
    ???

  7. #7
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const int pfirst = std::max(8, toto.size());
    const int plast = std::max(21, toto.size());
    const int c = std::count(toto.begin()+pfirst, toto.begin()+plast, 'o');
    Et dès que la contiguité des caractères dans les std::string aura été approuvée/entérinnée, on pourra officiellement écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int c = std::count(&toto[pfirst], &toto[plast], 'o');
    qui est plus agréable à l'oeil et au doigt.
    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...

  8. #8
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut
    Il y a des implémentations qui n'ont pas la continuïté ?

    Ca parait délicat d'offrir string::c_str() ( et même data() ) sans cela non ?

  9. #9
    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
    Pas à ma connaissance.
    Ceci dit, il suffit que c_str() (et data()) réalloue(nt) à la volée une zone unique de caractères contigus. Il y a déjà cette possibilité avec c_str() pour s'assurer du 0-terminal à en lire la liste des fonctions invalidant pointeurs et itérateurs dans mes souvenirs. Après, je pense que pas grand monde n'ait estimé que cela vaille le coup d'avoir une string implémentée comme une deque. Trop d'interfaces à la C qui attendent des "const char*" peut-être ?
    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...

  10. #10
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut
    IMHO, le coût de l'allocation est prohibitif.

    Mais attendons que les sages ratifient la continuïté alors

  11. #11
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Salut,

    Et pourtant, j'ai déjà vu des codes du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::string chaine;
    char caractere=chaine[n];
    A vrai dire, la contiguité ne doit pas *forcément* etre entérinée... pour autant qu'une surcharge de l'opérateur [] l'aie été

    Et, finalement, sa surcharge ne devrait pas poser énormément de problèmes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char std::string::operator[](int index) const
    {
        if(index>0)
            return (Next->operator[](index-1);
        return *valeur_caractere;
    }
    peut y suffire

    Maintenant, encore faut il que ce genre de surcharge soit implémenté/entériné...

    Quelqu'un en sait il quelque chose du point de vue de l'entérination
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  12. #12
    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
    Sauf que ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const_reference operator[](size_type off) const;
    reference operator[](size_type off);
    La contiguité est un état de fait dans toutes les implémentations de la SL que je connaisse. Du coup, comme avec les vecteurs, en pratique on est en mesure d'avoir &c[0]+n == &c[n] -- au détail des proxies près. En théorie, on n'est pas sensés l'avoir.
    D'ailleurs, ces histoires de proxy me font dire que si l'écriture via l'opérateur [] est valable, c'est dans le meilleur des cas avec des chaines vues comme non modifiables.

    Le futur est par . Il me semble qu'un autre lien avait été donné il y a peu. Ce n'était pas Loufoque qui l'avait donné ?
    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...

  13. #13
    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
    Quel type de lien ?

  14. #14
    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
    Sur la contrainte de contiguité des caractères des strigs -- mais j'ai très bien pu mettre trompé, après une certaine heure, les noms se mélangent.
    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...

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/05/2009, 13h49
  2. compter le nombre de mots dans une chaine en php
    Par hadjiphp dans le forum Langage
    Réponses: 6
    Dernier message: 22/04/2009, 21h20
  3. Réponses: 4
    Dernier message: 04/03/2009, 10h18
  4. Compter le nombre d'occurence dans une chaine
    Par shirya dans le forum Langage
    Réponses: 2
    Dernier message: 16/10/2007, 20h39
  5. [Tableaux] compter le nombre de caractere d'une chaine
    Par phpaide dans le forum Langage
    Réponses: 3
    Dernier message: 01/06/2006, 15h00

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