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 :

Création d'un format pour récupèrer des informations


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 0
    Points
    0
    Par défaut Création d'un format pour récupèrer des informations
    Bonjour,

    je souhaite ecrire dans un fichier , la date d'execution et de fin d'execution du fichier ( j'y arrive), mais a présent je souhaite créer un propre format afin de pouvoir parser ce fichier à l'aide d'un script python plus tard.

    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
     
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <ctime>
     
    using namespace std;
     
    void ecrireDansFichier(fstream& fichier) {
     
        if(fichier)
            {
                string nom = "Peter";
     
                fichier << "Bonjour, " << nom << endl;
     
                std::time_t result = std::time(NULL);
                fichier << __DATE__ << ":" << __TIME__ << "/n";
                fichier << std::asctime(std::localtime(&result)) << std::endl;
     
                fichier.close();
     
            }
             else
                cerr << "Impossible d'ouvrir le fichier" << endl;
     
    int main(){
             fstream fichier("trace.log", ios::out | ios::trunc);
             ecrireDansFichier(fichier);
             return 0;  
    }

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    C'est bien, nous sommes heureux pour toi.
    Quelle est ta question?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Points : 1 211
    Points
    1 211
    Par défaut
    Bonjour,

    Oui. Et ? Quel est le problème ?

    Remarques au passage :
    - "je souhaite ecrire dans un fichier , la date d'execution et de fin d'execution du fichier" => ?????,
    - tu as utilisé using namespace std; donc le "std::" devant time, time_t, asctime et localtime est inutile,
    - __DATE__ et __TIME__ sont des macros "transformées" en strings qui donnent la date et l'heure de compilation du programme, probablement pas ce que tu veux,
    - c'est "\n" et pas "/n" pour un retour à la ligne.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    Je souhaite créer un format , par exemple date_trace, car je vais créer un script python qui va parser mon fichier c++ et récupérer les lignes commençant par date_trace puis les envoyer dans un serveur ... mais je ne sais pas comment créer un format spécial

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Points : 1 211
    Points
    1 211
    Par défaut
    Citation Envoyé par luffy_m Voir le message
    Je souhaite créer un format , par exemple date_trace
    On avait compris, mais date_trace c'est censé être quoi exactement ?

    , car je vais créer un script python qui va parser mon fichier c++
    Le fichier source de ton programme ou celui qui est généré ?

    et récupérer les lignes commençant par date_trace puis les envoyer dans un serveur ...
    Les stocker sur un serveur ou les utiliser pour forger une requête ?

    mais je ne sais pas comment créer un format spécial
    Le format c'est juste une "convention" une manière de représenter quelque chose. Ici c'est toi qui décide de ce format si j'ai bien compris.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date_trace <madate> <monheure> <montruc> <monmachin>
    Ce truc pourrait très bien servir de "format". Ou alors j'ai absolument pas compris ce que tu voulais faire.

    Merci d'être clair dans les messages, on va pouvoir difficilement t'aider sinon.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    j'écris les dates dans un fichier log.

    Mon script python devra parser ce fichier log afin d'envoyer les données du format dans un serveur ( pour des stat ).

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Tu parles de parsing de fichier.
    Tu définis ce que tu veux comme contenu dans ton fichier, si tu veux séparer tes dates par \n \r toto ou "SALUtJeSUIsUNeCHAINeINUTILePOUrPOUVOIrFAIReDuSPLItSUrMOnCONTENuDeFICHIEr", c'est à ton bon vouloir.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    Je suis débutant en C++, etsi quelqu'un peut me montrer un exemple ça serait TOP

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Points : 1 211
    Points
    1 211
    Par défaut
    Citation Envoyé par luffy_m Voir le message
    Je suis débutant en C++, etsi quelqu'un peut me montrer un exemple ça serait TOP
    Pour l'exemple, je choisis un format que je définis par :
    - la chaîne "date_trace"
    - un nombre
    - une date
    Ces champs étant séparés par une nouvelle ligne ("\n").

    Ecriture :
    - j'écris la chaîne ("date_trace")
    - j'écris mon nombre
    - j'écris ma date

    Lecture :
    - je lis la châine ("date_trace")
    - je lis un nombre, je le stocke dans une variable
    - je lis une date, je la stocke dans une variable

    Impossible de plus te mâcher le travail.

  10. #10
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Si, en indiquant la faq C++, qui contient des entrées sur l'écriture et la lecture, dans un fichier ou non.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Points : 1 211
    Points
    1 211
    Par défaut
    Citation Envoyé par leternel Voir le message
    Si, en indiquant la faq C++, qui contient des entrées sur l'écriture et la lecture, dans un fichier ou non.
    Mais le monsieur il sait déjà le faire, la preuve avec le code qu'il nous a posté ...
    Il a juste pas compris le principe d'un format

  12. #12
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    juste une petite remarque: généralement les using sur tout un namespace sont un mauvaise idée. Surtout un namespace très peuplé comme std, gare aux conflits de noms.
    Sinon, pour enfoncer le clou, "créer un format" n'est pas un problème de C++ (ni de python d'ailleurs). Ca consiste simplement à réfléchir aux différentes valeurs à représenter, puis à décider "sur le papier" comment on va les écrire.
    Concernant les dates, il y a déjà plusieurs solutions communément utilisées, donc tu n'as à priori même pas besoin de créer de format (aussi bien python que C++ peuvent écrire et parser facilement tout format texte)
    A vrai dire tu as peut-être au contraire intérêt à utiliser un format de date standard (à moins de vouloir représenter des dates du système interplanétaire Klingon ou un truc du genre ) car dans ce cas tu trouveras des fonctionnalités standard pour écrire et parser...

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    L'idéal serait d'avoir : [Trace],nom_module,date_début,date_fin

    Voici l'avancement de 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
     
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <ctime>
     
    using namespace std;
     
    void startDateExecution(fstream& fichier) {
     
        if(fichier)
            {
     
               fichier <<  "[Trace] " << endl;
               fichier << "Start date of execution : " << __DATE__ << " : " << __TIME__ << endl;
     
            }
             else
                cerr << "Impossible d'ouvrir le fichier" << endl;
    }
     
    void endDateExecution(fstream& fichier) {
     
            time_t result = time(NULL);
            fichier << "End date of execution : " << asctime(localtime(&result)) << endl;
     
            fichier.close();
    }
     
    void displayDate(fstream& fichier) {
     
     
            startDateExecution(fichier);
            endDateExecution(fichier);
     
    }
     
    int main(){
             fstream fichier("trace.log", ios::out | ios::trunc);
             displayDate(fichier);
             return 0;  
    }

  14. #14
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Citation Envoyé par luffy_m Voir le message
    L'idéal serait d'avoir : [Trace],nom_module,date_début,date_fin
    Ce qu'on essaie de te faire comprendre, c'est que *rien* ne t'en empêche, dès lors que tu en décides...

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    Mais je vois pas comment récupèrer le nom du module/logiciel

  16. #16
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Il existe des possibilités de bas niveau, comme la macro __FILE__ par exemple. Si ta notion de module est de plus haut niveau, il faut que tu conçoives la solution correspondante (constante dans un header "de module", par exemple, variable membre dans un objet qui représente le module ... mais on ne peut pas définir ton besoin et sa solution à ta place...)
    Sinon, tu peux aller voir du côté de frameworks de log.

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    J'exécute mes script en ligne de commande sous Linux.
    (je ne peux installer aucun truc, seulement utiliser les modules standards).

    Le principe est d'écrire un fichier "log" dans lequel j'écris la date d'exécution de début et de fin du fichier.
    (d'ailleurs à ce sujet je pensais plutôt avoir un résultat de ce genre : [Trace],nom_module,2014-08-7 14:57:50,2014-08-7 14:57:52
    mais j'obtiens les dates ainsi :
    [Trace]
    Start date of execution : Aug 7 2014 : 14:58:24
    End date of execution : Thu Aug 7 14:58:26 2014


  18. #18
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    minute! tes exécutables, c'est bien toi qui les produits? codés en C++?
    les deux premières solutions sont du standard C++, pas besoin
    d'installer des modules
    la troisième nécessite de lier des bibliothèques à tes exécutables, si c'est fait en lien statique il n'y a rien non plus à installer.

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    Le code que j'ai mis plus haut, c'est je l'exécute en ligne de commande : g++ .....

    Peux ( si tu as le temps et l'envie biens sur) me fournir un exemple stp, car un exemple illustre et explique toujours mieux que des phrases .........

  20. #20
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Citation Envoyé par luffy_m Voir le message
    Le code que j'ai mis plus haut, c'est je l'exécute en ligne de commande : g++ .....

    Eh bien, en fait tu ne l'exécutes pas, tu le COMPILES.
    Si tu souhaites mesurer les temps de compilation, la question n'est pas une question de C++, elle dépend de ta méthode de compilation (scripts shell? dans ce cas c'est une question de shell)

    Tu comprends bien la différence entre compiler et exécuter un code C++?

Discussions similaires

  1. Script Shell pour récupérer des informations en SSH
    Par nanashi dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/03/2012, 09h24
  2. Script SNMP pour récupérer des information de la MIB
    Par patchiko dans le forum Développement
    Réponses: 4
    Dernier message: 23/05/2011, 18h31
  3. [Débutant] Création d'une boucle pour récupérer des informations
    Par youcef60 dans le forum MATLAB
    Réponses: 15
    Dernier message: 02/03/2010, 22h31
  4. Réponses: 6
    Dernier message: 28/09/2003, 17h49
  5. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44

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