J'essayais de compiler cet exemple de programme en utilisant GCC (versions testées 4.5.1, 4.6.3, 4.8.4):
#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>
using std::chrono::system_clock;
int main()
{
system_clock::time_point now = system_clock::now();
std::time_t now_c = system_clock::to_time_t(
now - std::chrono::hours(24));
std::cout << "One day ago, the time was "
<< std::put_time(std::localtime(&now_c), "%F %T") << '\n';
}
prog.cpp: In function 'int main()':
prog.cpp:14:18: error: 'put_time' is not a member of 'std'
Je pensais que ce n'était probablement pas encore implémenté. J'ai donc essayé de vérifier l'état d'implémentation de cette fonction. Je n'ai trouvé que cette page:
mais là je n'ai pu trouver aucune note sur put_time
ou chrono
ou similaire. Quelqu'un peut-il m'indiquer une ressource qui fournit des informations sur l'état d'implémentation de cette bibliothèque?
Voir TODO manipulateurs iomanip étendus std :: get_time et std :: put_time pour gcc 4.8.0.
Voir aussi Manière multiplateforme pour obtenir l'heure du jour? affirmant que cela n'est pas implémenté dans 4.7.0.
MISE À JOUR: En tant que développeur gcc Jonathan Wakely a confirmé ci-dessous: Le std::get_time
et std::put_time
les manipulateurs manquent toujours dans gcc 4.9.
MISE À JOUR: Jonathan Wakely fermé ce ticket le 22 décembre 2014:
Corrigé pour GCC 5
Merci simonwo de m'avoir prévenu.
Vous avez peut-être remarqué que le lien que vous avez donné ne répertorie pas les parties de la bibliothèque! Mais en dessous du tableau, il est écrit:
Le statut de l'implémentation de la bibliothèque peut être suivi dans cette table
Ce tableau note que std::get_time
et std::put_time
les manipulateurs ne sont pas encore implémentés.
Éditer: put_time
est maintenant sur le tronc de développement GCC.