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 :

C++ boost et date


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut C++ boost et date
    Salut les amis !

    Il y a bien longtemps que je ne fais plus de c++ et ponctuellement je dois m'y remettre pour un petit projet et je dois avouer que je suis perdu...

    Pourriez vous me donner un exemple concret et complet dans lequel on pourrait voir la déclaration d'une variable date et son affichage sous la forme SSYYMMDD-HHMMSS avec boost dans une console?

    Je repars de loin, alors il me faut la totale hein : les includes, le main, etc... et C++.
    J'insiste : il me faut ça avec la librairie BOOST car je vais devoir en utiliser une bonne partie.

    Merci d'avance !

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    La doc de Boost.Date_Time fournit déjà pas mal d'exemples, ils ne sont pas suffisamment clairs ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Citation Envoyé par cob59 Voir le message
    La doc de Boost.Date_Time fournit déjà pas mal d'exemples, ils ne sont pas suffisamment clairs ?
    Déja merci de m'aider c'est sympa !

    Bon c'est moi qui doit chapeauter... si je prends le premier exemple :

    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
    using namespace boost::gregorian;
    date weekstart(2002,Feb,1);
    date weekend  = weekstart + weeks(1);
    date d2 = d1 + days(5);
    date today = day_clock::local_day();
    if (d2 >= today) {} //date comparison operators 
     
    date_period thisWeek(d1,d2);
    if (thisWeek.contains(today)) {}//do something 
     
    //iterate and print the week
    day_iterator itr(weekstart);
    while (itr <= weekend) {
        std::cout << (*itr) << std::endl;
        ++itr;
    }  
    //input streaming 
    std::stringstream ss("2004-Jan-1");
    ss >> d3;
     
    //date generator functions 
    date d5 = next_weekday(d4, Sunday); //calculate Sunday following d4
     
    //US labor day is first Monday in Sept 
    typedef nth_day_of_the_week_in_month nth_dow;
    nth_dow labor_day(nth_dow::first,Monday, Sep); 
    //calculate a specific date for 2004 from functor 
    date d6 = labor_day.get_date(2004);
    Ben d'entrée il bute sur ceci : date d2 = d1 + days(5);

    L'erreur est la suivante :
    [error] Unexpected unqualified-id before 'if'
    [error] Error 'd1' was not declared in this scope
    Mais qui qui me veut cet exemple ?

    Il doit me manquer un truc de base...

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Il dit que d1 n'est déclaré nulle part, ce qui est vrai. Ces exemples ne sont pas faits pour être copiés-collés dans l'IDE sans réfléchir, hein...
    Ceux-là, oui.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Euh ouais, autant pour moi je me suis un peu emmêler les pinceau tout à l'heure. C'est bien l'exemple que tu me cites que je voulais te donner, lol. J'ai voulu aller vite et le reproduire sur mon portable car je n'ai pas mon autre PC sous la main et tout ça en 2 sec devant la télé...

    Donc du coup on oublie ce qui précède et on recommence avec cet exemple.

    Là, justement avec ce code j'ai ceci :

    [Linker error] SansNom3.o:SansNom3.cpp: (.text+0x194): undefined reference to `boost::gregorian::greg_month::as_long_string() const'
    ...
    [Error] Id returned 1 exit status

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Petit complément j'utilise Dev C++ Portable mais je vois pas en quoi cela pourrait changer quelque chose...

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    ld (et non pas Id) est ton éditeur de liens.
    S'il te renvoie une erreur, c'est certainement parce tu n'as pas ajouté les libs Boost à ton projet.

    Librairies que tu auras pris le soin de compiler avant d'ouvrir ce thread puisque, bien entendu, tu as le Getting Started fourni avec la documentation et noté qu'il fallait (dans le cas de conversions date/string) passer par une pré-compilation de Boost.DateTime.

  8. #8
    Membre confirmé
    Homme Profil pro
    Apprenti
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut boost, math
    Bonjour,

    pour reparler de boost, je viens de faire une recherche sur internet, pour voir où je peux trouver dans boost et seulement dans boost une librairie pour avoir la partie entière d'un nombre quelconque.

    J'ai été sur ce lien :

    mais ça ne répond pas à mes attentes.

    Je vous serais reconnaissant de bien voulouir m'indiquer un document où je puisse trouver cela directement sans devoir nécessairement demander ça à quelqu'un si j'ai besoin d'une librairie donnée.

    D'avance merci

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533

  10. #10
    Membre confirmé
    Homme Profil pro
    Apprenti
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Justement, ça m'intéresserait de savoir comment vous avez trouvé l'endroit précis dans la documentation. Qu'avez donné comme requête ?

    merci , cordialement

  11. #11
    Membre confirmé
    Homme Profil pro
    Apprenti
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut fonction partie entière
    Bonjour,

    je viens d'implémenter ce que vous m'avez conseillé à partir de boost.

    A savoir ce qui est à la page :

    http://www.boost.org/doc/libs/1_52_0...ing/round.html

    J'ai pris l'exemple de 4.5

    et le résultat de la partie entière est 5 , ce qui est faux.

    J'ai essayé toutes les variantes, et ça ne donne pas 4.

    Comment résoudre ce problème ?

    Où puis-je trouver la librairie de boost qui me permettrait d'obtenir la partie entière(celle qui me donnerait 4 précisément ?

    D'avance merci,

    cordialement

  12. #12
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par matlab_ Voir le message
    J'ai pris l'exemple de 4.5

    et le résultat de la partie entière est 5 , ce qui est faux.

    J'ai essayé toutes les variantes, et ça ne donne pas 4.

    Comment résoudre ce problème ?

    Où puis-je trouver la librairie de boost qui me permettrait d'obtenir la partie entière(celle qui me donnerait 4 précisément ?

    D'avance merci,

    cordialement
    https://fr.wikipedia.org/wiki/Arrondi

    Pour la partie entière d'un nombre à virgule (float / double), il suffit de le caster en int.
    ou plus proprement: std::floor

Discussions similaires

  1. Compiler Boost 1.35.0 (filesystem et date)
    Par djkamikaz dans le forum Boost
    Réponses: 41
    Dernier message: 07/04/2008, 11h41
  2. Heritage de boost::gregorian::date
    Par dhoorens dans le forum Boost
    Réponses: 3
    Dernier message: 05/02/2008, 23h52
  3. Réponses: 3
    Dernier message: 06/05/2002, 18h24
  4. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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