cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
15 août 2011 à 17:03
guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016
-
30 août 2011 à 13:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016 30 août 2011 à 13:25
au temps pour moi alors : le man date n'est pas forcément explicite du coup
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 30 août 2011 à 11:55
>> j'ai privilégié la rapidité d'écriture à la rigueur
Sans doute, mais écrire "const std::string&" au lieu de "string" n'est pas si handicapant, non ?
>> sinon ctime est largement suffisant et simple pour ça..
Tout dépend de si tu veux faire du C ou du C++. On évite de mélanger C et C++ à moins qu'il y ait une bonne raison. Avec Boost::datetime, il n'y en a pas :)
>> ... pour la commande unix date que j'ai consultée avant d'écrire ce prog,
Attention de bien lire la doc avant d'affirmer quelque chose:
>> de même elle ne peut convertir aucun timestamp en date
Ah bon ? Et un:
$ date -d @1314697811
Tue Aug 30 11:50:11 CEST 2011
A noter que ces remarques ne remettent pas en cause la qualité de ton programme. C'est d'ailleurs très propre d'avoir fait un man.
guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016 30 août 2011 à 11:33
Sur le passage des arguments par référence ( je voulais écrire par copie ) => désolé
guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016 30 août 2011 à 11:28
Merci pour ces remarques constructives,
Sur le passage des arguments par référence : j'ai privilégié la rapidité d'écriture à la rigueur (je ne développe pas tous les jours en c voilà la raison), mais j' en suis tout à fait conscient, de même pour le "using namespace std" , pour la différence entre it++ et ++it, j'avais oublié cette subtilité et donc merci pour ce rafraîchissement.
Pour les programmes similaires existants:
j'ai de vagues connaissances de boost mais je ne connaissais pas la bibli datetime, je vais aller y jeter un oeil pourquoi pas! sinon ctime est largement suffisant et simple pour ça..
autrement pour la commande unix date que j'ai consultée avant d'écrire ce prog, elle peut convertir la date courante en timestamp mais ne peut convertir aucune autre date, de même elle ne peut convertir aucun timestamp en date.. voilà
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 15 août 2011 à 17:03
>> Cette petite application en ligne de commande sans prétention avait pour but premier de convertir les dates en timestamp et vice versa sous unix, je l'ai ensuite adaptée pour convertir 1 format de date en 1 autre format de date avec la possibilité de manipuler des opération sur les différentes unités de temps au passage.
Tu sais que la commande "date" sous Unix, fait déjà tout ça ? En C++, il existe aussi la bibliothèque boost::date_time qui le fait aussi.
>> expérimenter la librairie
La bibliothèque
>> getopt.h
boost::program_option est bien meilleur.
Passons à la critique du code:
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace - Parenthèses non nécessaires pour les return. Ex: return (it!=mm.end()); => return it != mm.end();
- Au lieu de:
cerr<<"Usage: "<second!=s2) it++; // Et si à force de faire it++, on a it > mm.end() ?
return (it!=mm.end()); // Pourquoi y a-t-il deux return (it!=mm.end()) à la suite ?
return (it!=mm.end()); // Pourquoi y a-t-il deux return (it!=mm.end()) à la suite ?
}
30 août 2011 à 13:25
30 août 2011 à 11:55
Sans doute, mais écrire "const std::string&" au lieu de "string" n'est pas si handicapant, non ?
>> sinon ctime est largement suffisant et simple pour ça..
Tout dépend de si tu veux faire du C ou du C++. On évite de mélanger C et C++ à moins qu'il y ait une bonne raison. Avec Boost::datetime, il n'y en a pas :)
>> ... pour la commande unix date que j'ai consultée avant d'écrire ce prog,
Attention de bien lire la doc avant d'affirmer quelque chose:
>> elle peut convertir la date courante en timestamp mais ne peut convertir aucune autre date
Mouais...
http://www.christopher.compagnon.name/sitewww/shell-date.html
>> de même elle ne peut convertir aucun timestamp en date
Ah bon ? Et un:
$ date -d @1314697811
Tue Aug 30 11:50:11 CEST 2011
A noter que ces remarques ne remettent pas en cause la qualité de ton programme. C'est d'ailleurs très propre d'avoir fait un man.
30 août 2011 à 11:33
30 août 2011 à 11:28
Sur le passage des arguments par référence : j'ai privilégié la rapidité d'écriture à la rigueur (je ne développe pas tous les jours en c voilà la raison), mais j' en suis tout à fait conscient, de même pour le "using namespace std" , pour la différence entre it++ et ++it, j'avais oublié cette subtilité et donc merci pour ce rafraîchissement.
Pour les programmes similaires existants:
j'ai de vagues connaissances de boost mais je ne connaissais pas la bibli datetime, je vais aller y jeter un oeil pourquoi pas! sinon ctime est largement suffisant et simple pour ça..
autrement pour la commande unix date que j'ai consultée avant d'écrire ce prog, elle peut convertir la date courante en timestamp mais ne peut convertir aucune autre date, de même elle ne peut convertir aucun timestamp en date.. voilà
15 août 2011 à 17:03
Tu sais que la commande "date" sous Unix, fait déjà tout ça ? En C++, il existe aussi la bibliothèque boost::date_time qui le fait aussi.
>> expérimenter la librairie
La bibliothèque
>> getopt.h
boost::program_option est bien meilleur.
Passons à la critique du code:
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Parenthèses non nécessaires pour les return. Ex: return (it!=mm.end()); => return it != mm.end();
- Au lieu de:
cerr<<"Usage: "<second!=s2) it++; // Et si à force de faire it++, on a it > mm.end() ?
return (it!=mm.end()); // Pourquoi y a-t-il deux return (it!=mm.end()) à la suite ?
return (it!=mm.end()); // Pourquoi y a-t-il deux return (it!=mm.end()) à la suite ?
}