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 :

chaine de caract�res avec delimiteur, changer une sous chaine


Sujet :

Langage C++

  1. #1
    Membre tr�s actif
    Inscrit en
    Septembre 2002
    Messages
    270
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 270
    Par d�faut chaine de caract�res avec delimiteur, changer une sous chaine
    Hello � tous,

    j'ai un petit souci
    j'ai une chaine de caract�re, du genre

    "tagada; tsoin; tsoin; 123456"
    je voudrais masquer le premier tsoin avec des "*"

    comment pourrais-je faire en C++

    je pensais a un split remplacer la chaine et recomposer ma string, mais sans certitude qu'il n'y a pas une m�thode meilleur en c+

    y a t-il des fonctionnalit� de base interressante en c++ pour r�aliser cela?


    merci d'avance

  2. #2
    Membre �m�rite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France

    Informations professionnelles :
    Activit� : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677

  3. #3
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    Citation Envoy� par kaygee Voir le message
    "tagada; tsoin; tsoin; 123456"
    je voudrais masquer le premier tsoin avec des "*"
    Parce que c'est la premi�re occurence du mot "tsoin", ou parce que que tu le voies comme le deuxi�me �l�ment d'une liste d�limit�e par des points-virgules ?

  4. #4
    Membre Expert

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par d�faut
    Sinon, il y a toujours std::regex_replace() (std::tr1::regex_replace pour un compilateur qui ne supporte pas encore C++11, et cf. la librairie boost.regex pour un compilateur sans TR1 et sans C++11, comme les versions les plus r�centes de gcc).
    [FAQ des forums][FAQ D�veloppement 2D, 3D et Jeux][Si vous ne savez pas ou vous en �tes...]
    Essayez d'�crire clairement (c'est � dire avec des mots fran�ais complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Caf�. C'est d�pass� tout �a.
    Et si vous �tes sages, vous aurez peut �tre vous aussi la chance de passer � la t�l�. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  5. #5
    Membre tr�s actif
    Inscrit en
    Septembre 2002
    Messages
    270
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 270
    Par d�faut
    c'est bien parce que c'est la 2eme occurence.

    je ne connais pas la valeur qui peux s'y trouver

  6. #6
    Membre �m�rite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France

    Informations professionnelles :
    Activit� : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Par d�faut
    Citation Envoy� par oodini Voir le message
    Parce que c'est la premi�re occurence du mot "tsoin", ou parce que que tu le voies comme le deuxi�me �l�ment d'une liste d�limit�e par des points-virgules ?
    Citation Envoy� par kaygee Voir le message
    c'est bien parce que c'est la 2eme occurence.
    Excuse-moi, mais comme tu reprends des termes deux deux propositions, j'ai du mal � savoir laquelle est la bonne...

    Quoi qu'il en soit, la fonction std::string::find te permet de rep�rer tous les d�limiteurs.
    Il n'y a pas forc�ment besoin de d�couper la cha�ne.
    Ensuite, avec std::string::substr tu r�cup�res les �l�ments dont tu as besoin.
    Bon, s'il te faut traiter tous les �l�ments quoi qu'il arrive, cela peut �tre une bonne id�e de d�couper la cha�ne de d�part.

    Ceci dit, si tu veux uniquement remplacer le deuxi�me �l�ment par des �toiles (par exemple, autant d'�toiles que la longueur de l'�l�ment), tu peux faire quelque chose comme ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Chaîne d'entrée : str
     
    // On cherche le début du 2e élément, qui correspond à la position du premier délimiteur + la longueur du délimiteur
    int pos = str.find("; "/*, 0, 2*/) + 2; // Le '2' n'est pas obligatoire, c'est juste pour lui éviter de calculer la longueur du délimiteur...
                                              // Sans ce '2', le '0' n'est pas obligatoire non plus
     
    // La fin du 2e élément correspond à la position du 2e délimiteur
    int taille = str.find("; ", pos/*, 2*/) - pos;
     
    // On remplace le 2e élément par les étoiles
    str.replace(pos, taille, taille, '*');
    Au fait, � ton avis, ce code fonctionne-t-il lorsqu'il n'y a que deux �l�ments ? qu'un �l�ment au plus ?

Discussions similaires

  1. [Toutes versions] Ajouter une chaine de caract�re � la fin d'une autre chaine
    Par esstin dans le forum Excel
    R�ponses: 2
    Dernier message: 02/05/2009, 15h54
  2. Extraction d'une sous-chaine de caract�re
    Par ninsekh dans le forum Shell et commandes GNU
    R�ponses: 6
    Dernier message: 22/04/2008, 08h13
  3. R�cup�rer une sous chaine de caract�re
    Par Alexandre` dans le forum C
    R�ponses: 9
    Dernier message: 27/02/2007, 00h15
  4. position d'une sous-chaine de caract�re
    Par trax44 dans le forum Shell et commandes GNU
    R�ponses: 2
    Dernier message: 01/02/2007, 21h14
  5. R�ponses: 4
    Dernier message: 07/12/2006, 11h01

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