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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    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 averti
    Inscrit en
    Juillet 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 22
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

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

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    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 confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    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 296
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    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