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

SL & STL C++ Discussion :

parsage d'un string via istringstream


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Flutter/java/windev/php/javascript
    Inscrit en
    Octobre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Flutter/java/windev/php/javascript
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 87
    Par défaut parsage d'un string via istringstream
    bonjours, voila d'un cotes je parse un fichier avec istringstream et cela fonctionne parfaitement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    string line;
      ifstream fichier(file.c_str());
      while(getline( fichier,line))
      {
        istringstream iss( line );
        string valeur;
        while( getline( iss, valeur, '=' ) )
          values.push_back(valeur);
      }
    me permetant de parser un fichier properties java ^^

    d'un autre cela ne fonctionne pas lorsqu'il sagit d'un simple string :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string requete;
    istringstream iss( request );
    getline( iss, requete, '(');
    request contient: "LOGIN(login,pass)"
    je veux recuperer la requete puis plus tard les arguments dans une boucle...
    mais le string requete est vide apres le getline et iss est en fin de stream :/

    vous en pensez quoi? (j'ai les meme include dans les 2 cas)

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut, et bienvenue sur le forum.

    Chez moi, le code minimal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <iostream>
    #include <string>
    #include <sstream>
    int main()
    {
    	std::string request("LOGIN(login,password)");
    	std::istringstream iss(request);
    	std::string str;
    	std::getline(iss,str,'(');
    	std::cout<<str<<std::endl;
      return 0;
    }
    compile et s'exécute correctement avec la sortie
    Par contre, si toutes les requetes ont, d'office, une paire de parenthèses et que tu veux récupérer ce qui se trouve avant la parenthèse ouvrante, tu peux très bien t'en sortir avec les fonctions membres de string que sont substr() (récupération d'une sous chaine) et find() (recherche d'un caractère particulier), sans devoir passer par un *stringstream.

    Le code prendrait alors la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <iostream>
    #include <string>
     
    int main()
    {
    	std::string request("LOGIN(login,password)");
    	std::string str=request.substr(0,request.find('('));
    	std::cout<<str<<std::endl;
      return 0;
    }
    Enfin, peut être devrais tu envisager de te tourner vers boost pour la gestion de ton fichier: boost archive ou boost.tokenizer +boost.format selon le cas ou les besoins
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. Parsage d'un string System.Version
    Par olibara dans le forum C#
    Réponses: 7
    Dernier message: 21/07/2009, 14h29
  2. [Shellcode] Récupérer une string via "pop edi"
    Par homeostasie dans le forum x86 32-bits / 64-bits
    Réponses: 14
    Dernier message: 19/06/2009, 13h20
  3. Sauvegarde List<String> via Stack
    Par Iloyo dans le forum Langage
    Réponses: 11
    Dernier message: 02/02/2009, 11h18
  4. Conversion string en entier via istringstream
    Par Guyzeug dans le forum C++
    Réponses: 2
    Dernier message: 09/06/2008, 14h42
  5. [JNI] Retourner un tableau de String via JNI
    Par seiryujay dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 25/07/2006, 09h58

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