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

C++ Discussion :

Recuperer un champs particulier d'une chaine


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut Recuperer un champs particulier d'une chaine
    Bonjour,
    J ai une chaine de la forme :
    info=donnee1+'#'+donnee2+'#'+donnee3+'#'+donnee4'#'+MonInfoARecuper);

    En fait j aimerai pouvoir recuperer le champs : MonIndoARecuperer et le stocker dans une string..
    Comment est il possible de faire ca ( on a donc les separateurs # )
    Merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Je dirais qu'en mixant une de mes tambouilles pas très propres avec "Comment découper une chaîne en fonction d'un séparateur" en Direct de la FAQ, tu doit pouvoir y arriver en faisant un truc du style :
    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
    string recup_mot_numéro_n(int n)
     
    {
    info=donnee1+'#'+donnee2+'#'+donnee3+'#'+donnee4'#'+MonInfoARecuper);
    int i; // le compteur qui doit aller jusqu'à 5 puisque tu veux récupèrer la 5e donnée
     
        istringstream iss( info );
        string mot;
        while ( std::getline( iss, mot, '#' )&&(i<=n) )
        {
            cout << mot << '\n';
    i++;
        }
    return mot;
    }
    J'ai pas essayé ce code mais renseignes toi dans la FAQ (très bien faite et intuitive) et tu devrais y arriver sans trop de problème.
    Bon courage à toi.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    J avais teste avec la faq mais mon probleme est que sous win ca marche mais sous linux ac gcc le compilo me dit :
    sstream et iostream pas trouves

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu dois avoir une vieille version de gcc, met la à jour.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    istringstream iss('exemple') marche toujours sous dev mais sous g++, malgre que toutes les librairies soient bien importes, j ai un message d erreur du type :
    istringstream undeclared in this function, de meme pour iss, pour cout... etc.. Y a t il une difference par rapport a win ?
    merci d'avance

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Si tu n'as pas la moindre idée de ce que std:: signifie, va voir dans la FAQ à la section sur les espaces de noms et autres includes avec et sans .h

    Sinon, boost.regex, boost.tokenizer, et boost.spirit sont biens pour parser ce genre de choses (spirit étant peut-être une enclume ici)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Je vois ce que represente std mais je ne comprends tjs pas pourquoi mon code marche sous windows avec dev c++ et pas sous linux ac g++.
    Les librairies sont passees..
    Voila mon code
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <errno.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
     
    #define MYPORT 4950 
     
    #define MAXBUFLEN 100
     
    int main(void)
    {
        int sockfd;
        struct sockaddr_in my_addr;    // my address information
        struct sockaddr_in their_addr; // connector's address information
        int addr_len, numbytes;
        char buf[MAXBUFLEN];
     
        if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
            perror("socket");
            exit(1);
        }
     
        my_addr.sin_family = AF_INET;         // host byte order
        my_addr.sin_port = htons(MYPORT);     // short, network byte order
        my_addr.sin_addr.s_addr = INADDR_ANY; // automatically fill with my IP
        memset(&(my_addr.sin_zero), '\0', 8); // zero the rest of the struct
     
        if (bind(sockfd, (struct sockaddr *)&my_addr,
    		sizeof(struct sockaddr)) == -1) {
            perror("bind");
            exit(1);
        }
     
        addr_len = sizeof(struct sockaddr);
        if ((numbytes=recvfrom(sockfd, buf, MAXBUFLEN-1 , 0,
    		(struct sockaddr *)&their_addr, &addr_len)) == -1) {
            perror("recvfrom");
            exit(1);
        }
     
        printf("got packet from %s\n",inet_ntoa(their_addr.sin_addr));
        printf("packet is %d bytes long\n",numbytes);
        buf[numbytes] = '\0';
        printf("packet contains \"%s\"\n",buf);
     istringstream iss( "donnee1+#+donnee2+#donnee3+#donnee4);
        string mot;
        int compteur=0;
        while ( getline( iss, mot, '#' ) )
        {
        if (compteur==4){
            cout << mot << '\n';
            }
            compteur++;
        }
        close(sockfd);
     
    	return 0;
    }
    Quelqu'un a une idee ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    oups ca ne m etonne pas j'avais oublie using namespace std...
    Desole

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

Discussions similaires

  1. recuperer champ number dans une chaine
    Par pepitoluna dans le forum Oracle
    Réponses: 7
    Dernier message: 28/02/2011, 17h21
  2. [VB6] recuperer tous les numero ds une chaine
    Par mqsi dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 08/12/2006, 14h37
  3. Supprimer la valeur d'un champs access via une chaine SQL
    Par beegees dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/10/2006, 15h20
  4. [TStringField] inserer dans un champs NOT NULL une chaine vi
    Par kase74 dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/09/2005, 14h48
  5. Recuperer un champ calculé dans une variable....
    Par vijeo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/12/2004, 14h57

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