首页 > 作文

C++11时间日期库chrono的使用

更新时间:2023-04-04 18:25:03 阅读: 评论:0

目录
时钟与时间点clock时间显示运行计时时间间隔durationduration模板duration_castratio

chrono是c++11中新加入的时间日期操作库,可以方便地进行时间日期操作,主要包含了:duration, time_point, clock。

时钟与时间点

chrono中用time_point模板类表示时间点,其支持基本算术操作;不同时钟clock分别返回其对应类型的时间点。

clock

时钟是从一个时点开始,按照某个刻度的计数;chrono同时提供了三种时钟(通过now()获取当前时间点):

system_clock:系统时钟,相对epoch(1970-01-01 00:00:00utc)的时间间隔;steady_clock:单调时钟,只能增长(后一次调用now()得到的时间总是比前一次的值大);一般是相对于系统启动时间的时间间隔;high_resolution_clock:高精度时钟(当前系统能提供的最高精度时钟,很可能就是steady_clock),也是单调的;

需要得到绝对时点的场景使用system_clock;需要得到时间间隔,且不受系统时间修改而受影响时使用steady_clock。

时间显示

在c++20中直接有to_stream直接输出system_clock时钟;但在此之前,只能通过间接的方式来输出:

auto tnow = system_clock::now();auto tmnow = system_clock::to_time_t(tnow);auto locnow = std::localtime(&tmnow);cout<<std::put_time(locnow, "%y-%m-%d %h:%m:%s")<<endl; // 2019-12-20 19:35:12

system_clock::from_time_t(…)可以把time_t类型时间转换为time_point,便于chrono使用。

运行计时

通过steady_clock/high_resolution_clock可方便的进行试卷讲评教案计时:

public: explicit xruntime{bool bstart){  if(bstart) restart(); } void restart(){  m_tpstart =我的母亲赵一曼 high_resolution_clock::now(); } double stop(){  return operator()(); } double operator()(void){  auto tpend = high_resolution_clock::now();  auto elap = tpend - m_tpstart;  return (double)elap.count() / std::nano::den; //返回运行的秒数,如1.00345 }}

时间间隔duration

chrono中使用duration模板类来表示时间间隔,并定义了从小时到纳秒的时间间隔。

duration模板

duration使用一个数值(表示时钟数)和分数(ratio)来表示具体间隔。支持基本的算术运算,并通过count()获取具体的时钟数。

temp也是一种late<typename _rep, typename _period = ratio<1>>struct duration{ typedef _rep  rep; constexpr _rep count() const{  return (_myrep); } ...private: _rep _myrep; //时钟计数};

基准是秒,并依次定义了常用的间隔,如:

typedef duration<long long> conds;typedef duration<long long, milli> milliconds;typedef duration<long long, ratio<3600>> hours;

不同的时间间隔可以直接进行算术运算,如休眠需要毫秒参数,我们可以封装接收秒与毫秒的接口:

void mysleep(int nc, int nmillc){  std::chrono::conds cs(nc);  std::chrono::milliconds mills(nmillc);  std::this_thread::sleep_for(cs+mills);}

duratio个人学年总结n_cast

使用duration_cast可以方便的在不同时间单位间进行转换,如:

auto c=conds(123);auto minu=duration_cast<minutes>(c);cout<如何表白成功率高;<c.count()<<","<<minu.count()<<endl; // 123,2

ratio

ratio是一个分数模板类,第一个参数为分子,第二个参数为分母;通过静态成员可获取:

num:分子den:分母
typedef ratio<1, 1000> milli;typedef ratio<1000, 1> kilo;cout<<milli::den<<endl; // 1000

到此这篇关于c++11时间日期库chrono的使用的文章就介绍到这了,更多相关c++11时间日期库chrono 内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 18:25:01,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/c709726af95ed440c620f2bb643cdb97.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C++11时间日期库chrono的使用.doc

本文 PDF 下载地址:C++11时间日期库chrono的使用.pdf

标签:时间   时钟   间隔   模板
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图