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

MFC Discussion :

cherche fonction découpage chaine de caractère avc séparateu


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut cherche fonction découpage chaine de caractère avc séparateu
    Bonjour,
    je recherche une fonction qui permet de découper une chaine de caractère en plusieurs morceau , à l'endroit ou se trouve des séparateurs.

    Car je recoit un message en chaine de caractère avec des séparateurs de type tabulations. Par exemple je recois :

    "12312|remy|semen"

    J'aimerais en sortie séparer les trois chaine de caractères : "12312","remy","semen".

    Je sais qu'en visual basic cette fonction existe mais par contre en c++ , je n'arrive pas a la trouver.

    Pourrez tu m'aider et le cas ou celle ci n'existerait pas pourrez tu me dire rapidement comment réaliser cette opération.

    merci beaucoup.

  2. #2
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Je ne sais pas si tu prévois les MFC, mais si c'est le cas, tu peux utiliser les fonctions :
    TCHAR GetAt( int nIndex )
    CString Left( int nCount )
    CString Right( int nCount )


    Dans une boucle, tu parcours la chaîne. Quand tu trouves le séparateur, ce qu'il y a à gauche est ton mot, ce qu'il y a à droite devient la nouvelle chaîne à parcourir...

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    ou la fonction CString::Find
    ou alors mieux pour les occurences:
    strtok()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    char string[] = "A string\tof ,,tokens\nand some  more tokens";
    char seps[]   = " ,\t\n";
    char *token;
     
    void main( void )
    {
       printf( "%s\n\nTokens:\n", string );
       /* Establish string and get the first token: */
       token = strtok( string, seps );
       while( token != NULL )
       {
          /* While there are tokens in "string" */
          printf( " %s\n", token );
          /* Get next token: */
          token = strtok( NULL, seps );
       }
    }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    Bonjour,
    je ne sais pas comment convertir une CString en chaine de caractère.
    J'ai une CString et je voudrais le resultat en CHAR Message[30]

    Merci pour votre aide

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    strcpy(Message,lacstring);

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    Salut ,
    j'ai essayé mais le compilateur ne peut pas convertir le deuxieme paramètre de Cstring a char*.
    En plus maintenant je recherche une fonction qui permet de passer de cstring a int.

    Merci

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    hum bizzare c'est quoi le mess ?
    convertion en int n=atoi(lactring)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    En réalité , je recois un message entier dans une Cstring , celui ci contient plein d'informations utiles séparé par des séparateurs \t.
    Ces infos sont de type integer et string et je désire les remettre sous leur forme initiale.

    Le problème c'est que j'ai créé une structure dans ma classe de type :

    struct //structure de reception du message recu par l'interface
    {

    const char* nom_astre;
    const char* categorie;

    int variation_coordonne;

    }message;


    Je n'arrive pas a declarer nom_astre et categorie comme étant des CString car le compilateur me marque une erreur.

    En plus , pour convertir en integer je pensais convertir les CString en chaine de caractère pour utiliser atoi() car celui ci ne marche pas quand on lui rentre des Cstring.

    Je pense que mon code est vraiment mauvais , qu'est ce que tu ferais a ma place?

    merci

  9. #9
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut
    L'erreur doit venir du fait que ton projet n'est pas configuré pour utiliser les MFC. C'est quoi ton message d'erreur ?

    (Personnellement, j'utilise la fonction atoi() avec des CStrings sans problèmes.)

  10. #10
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    bon on reprend ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    //structure de reception du message recu par l'interface
    class InterfaceMsg
    {
    public:
    	InterfaceMsg(const char *szMessOrg=NULL)
    	{
                    if(szMessOrg)
    		MakeParams(szMessOrg);
    	}
    	void Raz()
    	{
    		m_strNomAstre="";
    		m_strCategorie="";
    		m_nVariationCoordonne=0;
    	}
    	void SetAstre(const char *sz){m_strNomAstre=sz;}
    	const char *GetAstre(){return m_strNomAstre;}
     
    	void SetCategorie(const char *sz){m_strCategorie=sz;}
    	const char *GetCategorie(){return m_strCategorie;}
     
    	int GetVariationCoordonne(){return m_nVariationCoordonne;}
    	void SetVariationCoordonne(int n){m_nVariationCoordonne=n;}
     
    	bool MakeParams(const char *szMessOrg)
    	{
    		char *szItem=NULL;
    		char *sz = new char[strlen(szMessOrg)+1];
    		strcpy(sz,szMessOrg);
     
    		szItem=strtok(sz,"\t");
     
    		if(szItem)  SetAstre(szItem);
    		else
    		{
    			delete sz;
    			return false;
    		}
    		szItem=strtok(NULL,"\t");
    		if(szItem)  SetCategorie(szItem);
    		else
    		{
    			delete sz;
    			return false;
    		}
    		szItem=strtok(NULL,"\t");
    		if(szItem) SetVariationCoordonne(atoi(szItem));
    		else
    		{
    			delete sz;
    			return false;
    		}
    		delete sz;
    		return true;
    	 }
     
    public:
    CString m_strNomAstre;
    CString m_strCategorie;
     
    int    m_nVariationCoordonne;
     
    }; 
    // utilisation 
    InterfaceMsg Msg("Lune\tSatellite\t10");
    // ou InterfaceMsg Msg;
    // Msg.MakeParams("Lune\tSatellite\t10");
    AfxMessageBox(Msg.GetAstre());
    AfxMessageBox(Msg.GetCategorie());
    CString str;
    str.Format("%d",Msg.GetVariationCoordonne());
    AfxMessageBox(str);

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    Merci infiniment pour tout ce que tu as fais , j'ai recopié ce que tu as fait et c'a marche super bien.
    salut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/01/2011, 19h02
  2. Découpage chaine de caractère
    Par Kishin dans le forum Langage
    Réponses: 1
    Dernier message: 28/04/2009, 16h59
  3. MDX fonction sur chaine de caractères (concat(),Substring())
    Par YagamiRaito dans le forum Mondrian
    Réponses: 2
    Dernier message: 16/08/2007, 17h16
  4. Fonction sur chaine de caractère (ASCII)
    Par Medmidou dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/05/2007, 01h40
  5. [C#] Fonction de Chaine de caractères
    Par slyv dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/12/2004, 18h41

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