Je voudrais savoir si il existe un type de variable c++ qui peut être initialiser par un temps de type 1:2:3:5(h:min:s:ms) entrer par l'utilisateur
Je voudrais savoir si il existe un type de variable c++ qui peut être initialiser par un temps de type 1:2:3:5(h:min:s:ms) entrer par l'utilisateur
Bonjour,
Réponse courte : Non.
Réponse longue : Il existe des types "dédiés" à la manipulation du temps, comme clock_t ou time_t. Mais ces types sont en réalités des typedefs de types builtins. Il est donc possible d'initialiser des variables de tels types en fonction de ce qu'entre l'utilisateur, mais pas sans parsing.
En C++11, oui
Regarde <chrono>.
est ce qu'elle peut contenir le temps type h:min:s:ms
À ma connaissance, il n'existe pas de classe qui gère tout ça directement.
Si tu utilises uniquement la bibliothèque standard, tu peux écrire ta propre classe qui sera composée de std::chrono::hours, std::chrono::minutes, std::chrono::seconds, std::chrono::milliseconds, std::chrono::microseconds, std::chrono::nanoseconds (par exemple).
Le C++ te propose des briques de base et ne t'impose aucun choix,
Question,
Combien de de temps s'est il ecoule entre le 31 decembre 2008 23:59:55 et le 1 janvier 2009 00:00:5 ? (oui il y a un piege)
Et il y a encore pleins de cas particuliers du meme acabit (N'oublie pas que la revolution d'octobre a eu lieu en novembre pour l'europe de l'ouest)
On peut aussi se poser une autre question, celle des facon de formater le temps, je ne suis pas sur que partout sur la planete on ecrive hh:mm:ss
Bref le compage de temps c'est un sacre bordel, et les besoins sont fortement en fonction des applications. Donc il y a des choix a faire, c'est donc a l'utilisateur de faire ces choix.
Bref il faut soit ecrire ta classe, soit utiliser une librairie toute faite.
Je connais pas (encore) std::chrono qui contiens surement des briques plus avancee que time_t mais il faut pas rever ca restera des briques.
chrono implémente tout de même 2 classes bien pratiques: duration et time_point.
Ce sont deux classes distinctes car ce sont des notions bien différentes. D'ailleurs cet en-tête vient de boost, de la lib date_time, qui est donc le résultat de longues années d'utilisation, de modifications et d'améliorations.
Partager