Recuperer une sous-chaine située entre deux caracteres particulier

vero77lisa Messages postés 12 Date d'inscription lundi 2 janvier 2006 Statut Membre Dernière intervention 23 janvier 2006 - 12 janv. 2006 à 16:11
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 - 13 janv. 2006 à 09:48
Bonjour,

Je recherche un petit bout de code me permettant de récupérer dans une variable, une sous-chaine située entre 2 caractères distincts et différents :

Par exemple :
---------------

AnsiString machaine = "<421><No comment>";

Le but est de récupérer :
421 dans une variable, et
No comment dans une autre variable.

- Est-ce qu'il faut que je calcule la longueur de la chaine,
- et parcourir caractère par caractère ?


Pourriez-vous me donner un petit coup de main, svp ?



Merci a tous pour votre aide
vero

3 réponses

ekinox17 Messages postés 66 Date d'inscription jeudi 6 octobre 2005 Statut Membre Dernière intervention 18 janvier 2006
12 janv. 2006 à 17:20
char str1[],str2[];

while(*machaine != '>'){
(*machaine == '<')? *str1=*machaine;
machaine++;}
while(*machaine!= '>'){
(*machaine == '<')? *str2=*machaine;
machaine++;}

j'ai rien verifier : en plus c'est codé a la barbare donc c'est justepour te donner une idée et puis c'est quand meme un peu la base du C ... donc apres ne fai pas du c++ si tu sais pas faire de C. ;)
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
12 janv. 2006 à 22:58
Regarde les options de sscanf.
Il y a une mini gestion d'expression régulière avec.
Tu peux l'utiliser de la sorte (je garanti pas la syntaxe, mais ça s'en rapproche):
sscanf(machaine, "%*[^<]<%[^>]>", str1);
Avec ca tu recuperes ce qui est compris entre le premier '<' et le premier '>'.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
13 janv. 2006 à 09:48
Bonjour,



L'objet AnsiString a une fonction membre SubString (AnsiString
__fastcall SubString(int StartPosition, int HowManyChars) const;) qui
renvoie une partie de la AnsiString



AnsiString machaine = "<421><No comment>";



AnsiString autrechaine = machaine.SubString(2, 3);



// autrechaine contiendra 421



Pour retrouver la position d'un ou plusieurs caractères dans un AnsiString il faut utiliser la fonction membre Pos


int __fastcall Pos(const AnsiString& SubString) const;


il existe aussi la fonction membre Delete (AnsiString& __fastcall Delete(int Index, int Count);) ça peut aussi servir.



Cordialement

Fred Cailleau-Lepetit (http://cfred.free.fr)
0
Rejoignez-nous