Chaine de caractére+ansistring

Signaler
Messages postés
13
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
23 mai 2005
-
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011
-
Salut voici mon problème.





char *donnees;


strcpy(donnees,"e;1.2;45;manu");


typedef struct


{


AnsiString val;


float t; int k;


AnsiString type;


}donnees;





J'ai une chaine de caractére qui contient des valeurs intercalées de
(;) et une structure qui contient des AnsiString, float et un int. Je
voudrais récupérer les caractéres de ma chaine dans ma structure mais
sans les points virgule, c'est-à dire comme l'exemple ci-dessous:


val=e;


t=1.2;


k=45;


type=manu;





Si quelqu'un pouvait m'aider se serait sympa





Merci d'avance

1 réponse

Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

Tu pourais utiliser strtok(), par exemple:

#include <string.h> /* en C */
#include <cstring> /* en C++ */

char * token;
int nItem = 0;
if ( NULL !(token strtok( donnees, ";" )) )
{
do
{
switch ( nItem )
{
case 0:
TaStruct.val = token; break;
case 1:
TaStruct.t = token; break;
case 2:
TaStruct.k = token; break;
case 3:
TaStruct.type = token; break;
default: break;
} while ( ++nItem < 4 && NULL !(token strtok( NULL, ";" )) );
}

if ( nItem != 4 )
{
ERROR - il manque des items
}

c'est très basic comme exemple et comme c'est un exemple, il ne faut pas faire de copy/paste :}. Il n'y à aucune vérification/conversion de donnée dans l'exemple, c'est voulu.

Tu pourais aussi utiliser strchr() ou autre routine du genre, en général c'est assez simple à faire ...

~(.:: NitRic ::.)~