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 :

automatiser la récupération de parametres d'un fichier


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut automatiser la récupération de parametres d'un fichier
    hello tout le monde, j'ai un probleme un peu épineux pour moi en ce moment, voila :
    J'ai besoin de traiter un fichier qui se présente sous la forme suivante :

    mon fichier :
    "
    parametre1 : abhdzbf
    parametre2 : gttrhogtirh
    ..
    "
    Ma premiere idée :
    je cherche a choper la correspondance de chaque parametre, pour cela j'effectue un find du parametre puis je fais un substr en connaissant la longueur du parametre.
    mais le probleme est que pour certains parametres je ne connais pas la longueur !
    donc la commande substr est inopérante car elle a besoin du parametre de position initiale et de longueur de la chaine à récupérer.
    Une idée ? ex :
    trame.substr(position_initiale, position_finale) sachant que je connais la position finale (position d'un retour chariot)


    Ma deuxieme idée :

    Si je trouve une solution à ma premiere idée, ma deuxieme serait de récupérer en entrée à la fois ce qui est à gauche, et à droite des ":" qui séparent le parametre de sa correspondance.
    Ainsi je créerais un vecteur de paires de string qui vaut en premier element de paire, le parametre, et en deuxieme element de paire, la correspondance.

    Quelqu'un aurait il une idée ?

    De plus, peut on rajouter dynamiquement des composantes d'une classe ?
    (j'ai une classe toto qui contient des entiers en privé, est il possible d'en rajouter dans la classe depuis une méthode ? c'est impossible à mon avis, mais bon je cherche hein )

    Merci pour vos réponses et pour avoir pris le temps de me lire ! A+

  2. #2
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Fiquet
    - FAQ SDL
    - FAQ C++

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    merci je jette un oeil

  4. #4
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    effectivement une solution pourrait correspondre à quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      std::istringstream iss( trame );
         std::string parametre, valeur;
         while(  std::getline( iss, parametre, ' ' )){
         std::getline( iss, parametre, ':' );
            std::cout << "Parametre : " << parametre << '\n';
      std::getline(iss,valeur, '\n');
      std::cout << "valeur : " << valeur << '\n';
      system("pause");
      }
    seulement le parametre que j'ai en entrée est parfois rempli d'espaces au départ, exemple a l'affichage :
    "
    Parametre : mot param
    valeur : frenjfnre
    "

    De plus, le parametre qui m'intéresse est le dernier avant le ":" (et non les deux mots "mot" et "param" comme dans l'exemple précédent).

    Je peux peut etre manipuler la string apres ? (idée : faire un rfind de " ") puis un substr depuis l'endroit de l'espace jusqu'à la taille de la string - la position de l'espace

  5. #5
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    pas tres propre (pour l'instant) mais fonctionne bien :

    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
     
         std::getline( iss, parametre, ':' );
     
      if(((parametre.rfind('\n')<500)&&(parametre.rfind('\n')>0))||((parametre.rfind(' ')<500)&&(parametre.rfind(' ')>0))){
         parametre = parametre.substr(parametre.rfind(' ')+1, parametre.size() - parametre.rfind(' ') );}
     
         std::cout << "Parametre : " << parametre << '\n';
      std::getline(iss,valeur, '\n');
         valeur = valeur.substr(valeur.find(' ')+1, valeur.size() - valeur.find(' ') );
     
      std::cout << "valeur : " << valeur << '\n';
      system("pause");
      }
     
      //TCS
      }

  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
    boost.program_option ?
    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
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    boost n'est pas conseillé dans mon stage

    ceci dit mon deuxieme probleme n'est pas encore corrigé !

    je cherche à créer un objet qui contiendra directement tous les parametres en entrée et leurs assignations directement ! exemple :

    objet toto

    contient trois elements de type string qui sont :

    parametre1, parametre2, parametre3,

    et chaque parametre vaut respectivement 5, 434, bidule

    est ce possible ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    en fait il te faut une collection de paramètres que tu rempliras au fur et à mesure. chaque paramètre possédera un nom (string) et une valeur (string aussi ???).
    Après le côté pas top c'est que tu vas devoir chercher à chaque fois ton paramètre pour en extraire la valeur... std::map ?

  9. #9
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    ouaip j'avais songé a map également, ta méthode me convient, merci je vais regarder tout ca !

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

Discussions similaires

  1. [XL-2003] Automatiser la récupération de fichiers .txt
    Par Maxime082 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/05/2011, 09h35
  2. automatiser une récupération de fichier
    Par Sgt KräN dans le forum VBScript
    Réponses: 14
    Dernier message: 11/01/2008, 12h29
  3. [JSP] Passage et récupération de parametre
    Par Chonchon dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 23/06/2005, 15h48
  4. récupération de parametres en sortie d'une SP
    Par jbat dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/04/2005, 08h41
  5. Réponses: 6
    Dernier message: 28/04/2004, 10h41

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