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

Langage C++ Discussion :

supression caractère dans une chaîne


Sujet :

Langage C++

  1. #1
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut supression caractère dans une chaîne
    Bonjour,

    c'est vendredi, alors un peu de détente

    Je me demandais quelle était la meilleure façon de supprimer un caractère donné dans une string. La plus élégante, la plus rapide, la plus robuste.

    Je propose donc la solution suivante, qui efface tous les ' ' (espace) dans la chaine my_string:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my_string.erase( std::remove_if( my_string.begin(), my_string.end(), [] ( const char& c ) { return ( c == ' ' ); } ), my_string.end() );
    Avez-vous d'autres propositions?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 94
    Points : 122
    Points
    122
    Par défaut
    hmm au risque de passer pour un copieur ():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my_string.erase(std::remove(my_string.begin(),my_string.end(),' '),my_string.end());
    ne serait pas mieux ?

    ou alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string.erase(std::remove_if(string.begin(), string.end(), std::isspace),string.end());
    en passant par le isspace

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Ton code est plus simple, mais je trouve que l'utilisation d'un lambda c'est plus classe
    Après, il faudrait vérifier mais je pense que l'asm généré doit être à peu près équivalent, si compilé avec les options d'optimisation de vitesse.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/09/2006, 12h07
  2. Comment remplacer plusieurs caractères dans une chaîne?
    Par Antigonos Ier Gonatas dans le forum Général Python
    Réponses: 5
    Dernier message: 16/06/2006, 16h04
  3. Réponses: 5
    Dernier message: 08/03/2006, 22h20
  4. Réponses: 5
    Dernier message: 03/02/2006, 18h47
  5. [String] Remplacement caractères dans une chaîne
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 4
    Dernier message: 19/07/2004, 11h15

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