wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 5

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Recherche et suppression de la chaine "-"+CR+LF dans une chaine.
Conversation : Recherche et suppression de la chaine "-"+CR+LF dans une chaine.
29-08-2009 11:43:07  Recherche et suppression de la chaine "-"+CR+LF dans une chaine. #1
Alfred83 (Membre)
Lieu: Toulon 83
Inscrit le : 28-12-2007
Messages: 42
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour,
Dans une chaine je cherche pour l'éliminer la sous-chaine: tiret +CR + LF
Les deux façons de faire ci-dessous ne donnent rien

Code Cpp:

 
         string MqCesu = "-" + char ( 13 ) + char ( 10 );
         string Cle = "abc" + MqCesu + "defg";
         int Loc2 = 0;
 
         Loc2 = Cle.find ( MqCesu, 0 );
         if ( Loc2 != string::npos )
            { Cle =Cle.substr ( 0, Loc2 ) + Cle. substr ( Loc2 + 3 ); }
         // ceci ne marche pas !
 
         Loc2 = Cle.find ( "-", 0 );
         if (  ( Loc2 != string::npos ) && ( Cle [ Loc2 + 1 ] == char ( 13 ) )
            && ( Cle [ Loc2 + 2 ] == char ( 10 ) ) )
            {
                Cle =Cle.substr ( 0, Loc2 ) + Cle. substr ( Loc2 + 3 );
                Msg = wxT ( "53 Trouvé MqCesu" ); AffiMsg ( Msg );
            }
         // ceci non plus!
 


  Quelqu'un voit-il une méthode pour me sortir de cette impasse, en utilisant une string ou une wxString?
  Par ailleurs j'aimerais comprendre pourquoi cela ne marche pas, CR et LF me semblent autorisés dans les chaines, et devraient pouvoir être traités par "find" comme d'autres caractères?

Informaticien bénévole du "Groupement des Intellectuels Aveugles ou Amblyopes" à Toulon, qui publie les trois quarts des livres en braille en France.
29-08-2009 11:58:40  Re: Recherche et suppression de la chaine "-"+CR+LF dans une chaine. #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

Comme on est sur un site dédié à wxWidgets, je vais te filer la solution (testée) avec les wxString :

Code wxWidgets:

// La chaine à remplacer
wxString sCesu=_T("-") + wxChar(13) + wxChar(10);
// La chaine de test (contenant bien entendu la chaine à remplacer)
wxString sTest=_T("Hello") + sCesu + _T("World") + sCesu + _T("!");
// Ici, on remplace par le caractère '*'
// Mais il est tout à fait possible de mettre une chaine vide
// Pour supprimer les occurences
sTest.Replace(sCesu, _T("*"), true);
 


@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
29-08-2009 21:59:44  Re: Recherche et suppression de la chaine "-"+CR+LF dans une chaine. #3
Alfred83 (Membre)
Lieu: Toulon 83
Inscrit le : 28-12-2007
Messages: 42
Snippets: 0
Tutoriels: 0
Hors ligne
Merci pour ta réponse rapide.
Malheureusement je n'obtiens aucun changement ni en remplaçant ma sous-chaine par "*" ni "".
J'ai passé l'après-midi sur le pb sans beaucoup avancer.
La cause doit être ailleurs, en général une solution apparait plus facilement le matin.
Aussi je te souhaite une bonne nuit.
----------
Finalement j'ai du renoncer à utiliser "find" et "remplace", car lorsque je recherche une sous-chaine contenant RC (wxChar(13)),la sous-chaine n'est pas trouvée et le remplacement ne se fait pas.
J'ai contourné le pb en utilisant des "find" sur un caractère et "mid" pour faire les remplacements. C'est plus lourd mais ca marche.
Merci. A bientôt.

Dernière modification par Alfred83 (06-09-2009 16:40:43)


Informaticien bénévole du "Groupement des Intellectuels Aveugles ou Amblyopes" à Toulon, qui publie les trois quarts des livres en braille en France.
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Recherche et suppression de la chaine "-"+CR+LF dans une chaine.