Bibliothèque standard C++<chrono>
Introduit dans C++11<chrono>La bibliothèque est utilisée pour gérer l'heure et les dates. Elle fournit un riche ensemble d'outils pour mesurer des intervalles de temps, effectuer des calculs sur des points temporels et gérer les dates et les heures.<chrono>La bibliothèque est un élément central de la bibliothèque standard C++ pour la gestion des opérations liées au temps.
Concepts de base
Points temporels
Un point temporel représente un instant spécifique, généralement associé à une horloge particulière.
Durées
La durée représente l'intervalle de temps entre deux points temporels.
Horloges
Les horloges sont la source des points temporels et des durées. C++ fournit plusieurs horloges différentes, telles que l'horloge système, l'horloge haute résolution, et d'autres.
Syntaxe de base
Inclure les fichiers d'en-tête
Lors de l'utilisation<chrono>Avant d'utiliser la bibliothèque, vous devez inclure le fichier d'en-tête correspondant :
#include <chrono>
Utilisation des points temporels
auto now = std::chrono::system_clock::now();
Utilisation des durées
auto duration = std::chrono::seconds(5);
Calcul des points temporels
auto future_time = now + duration;
Exemple
Mesure du temps d'exécution d'une fonction
Voici un exemple utilisant<chrono>Un exemple simple de mesure du temps d'exécution d'une fonction avec la bibliothèque :
Exemple
#include <chrono>
void someFunction() {
// Simuler quelques opérations
std::this_thread::sleep_for(std::chrono::seconds(1));
}
int main() {
auto start = std::chrono::high_resolution_clock::now();
someFunction();
auto end = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
std::cout << "La fonction a pris " << duration.count() << " millisecondes pour s'exécuter." << std::endl;
return 0;
}
Résultat de sortie :
Function took 1000 milliseconds to execute.
Gestion des dates et des heures
<chrono>La bibliothèque peut également être utilisée pour gérer les dates et les heures. Voici un exemple utilisantstd::chrono::system_clocketstd::chrono::time_pointExemple d'obtention de la date et de l'heure actuelles :
Exemple
#include <chrono>
#include <ctime>
int main() {
auto now = std::chrono::system_clock::now();
std::time_t now_c = std::chrono::system_clock::to_time_t(now);
std::cout << "Date et heure actuelles : " << std::ctime(&now_c);
return 0;
}
Résultat de sortie :
Current date and time: Fri Mar 11 12:34:56 2022
Utilisation avancée
Utilisation de différentes horloges
C++ fournit plusieurs horloges, par exemple :
std::chrono::system_clock: Horloge système, généralement synchronisée avec l'heure système.std::chrono::steady_clock: Horloge monotone, non affectée par les modifications de l'heure système.std::chrono::high_resolution_clock: Fournit l'horloge avec la plus haute résolution.
Formatage de la date et de l'heure
Vous pouvez utiliser<iomanip>et<ctime>pour formater la date et l'heure :
Exemple
#include <iomanip>
#include <chrono>
#include <ctime>
int main() {
auto now = std::chrono::system_clock::now();
std::time_t now_c = std::chrono::system_clock::to_time_t(now);
std::cout << std::put_time(std::localtime(&now_c), "%Y-%m-%d %H:%M:%S");
return 0;
}
Résultat de sortie :
2022-03-11 12:34:56autres extensions