C++ 标准库-chrono 基本用法

文章目录


再C++开发中,经常会遇到时间相关的问题,这里可以借助 <chrono>来帮我们解决问题。

<chrono> 是 C++ 标准库中的一个头文件,它提供了处理时间和日期的功能。这个库引入了一组类型和函数,用于在程序中进行时间点、时钟和时间间隔的操作。

<chrono> 库主要包含以下几个组件:

  1. 时间点(Time Point):表示某个特定时刻的时间值。时间点通常以从某个固定起点开始的持续时间来表示。例如,可以使用 std::chrono::system_clock::now() 来获取当前时间点。

  2. 时钟(Clock):表示一个时间的度量尺度,可以用于测量时间点之间的间隔。C++ 提供了多种时钟类型,如 std::chrono::system_clockstd::chrono::steady_clockstd::chrono::high_resolution_clock

  3. 时间间隔(Duration):表示两个时间点之间的时间长度。时间间隔可以是不同单位的持续时间,如秒、毫秒、微秒等。可以使用 std::chrono::duration 类型来表示时间间隔。

  4. 时钟转换(Clock Conversions):可以将不同时钟类型的时间点相互转换。例如,可以将一个系统时钟的时间点转换为稳定时钟的时间点。

  5. 时钟运算(Clock Arithmetic):可以对时间点进行算术运算,如加法、减法和比较操作。

通过使用 <chrono> 库,您可以在 C++ 程序中方便地进行时间和日期的处理,例如计算时间间隔、测量代码运行时间、转换时钟类型等。这个库提供了强大而灵活的工具,使得时间相关的操作变得更加简单和可靠。
下面展示一下用法:

  • 获取当前时间点并将其转换为时间戳,注意一些时区问题
  • 将时间戳转换为本地日期和时间。
  • 使用 std::chrono::duration 表示时间间隔,并计算总共的时间间隔。
  • 使用 std::chrono::steady_clock 测量程序运行时间。
#include <iostream>
#include <chrono>int main() {// 获取当前时间点std::chrono::system_clock::time_point now = std::chrono::system_clock::now();// 将时间点转换为时间戳(秒)std::time_t timestamp = std::chrono::system_clock::to_time_t(now);std::cout << "Timestamp: " << timestamp << std::endl;// 将时间戳转换为本地日期和时间std::tm* localTime = std::localtime(&timestamp);char timeStr[100];std::strftime(timeStr, sizeof(timeStr), "%Y-%m-%d %H:%M:%S", localTime);std::cout << "Local Time: " << timeStr << std::endl;// 使用 std::chrono::duration 表示时间间隔std::chrono::hours hours(2);std::chrono::minutes minutes(30);std::chrono::seconds seconds(45);// 计算总共的时间间隔std::chrono::duration<double> totalTime = hours + minutes + seconds;std::cout << "Total Time: " << totalTime.count() << " seconds" << std::endl;// 使用 std::chrono::steady_clock 测量程序运行时间std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();// 在这里执行您的代码std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();std::chrono::duration<double> elapsed = end - start;std::cout << "Elapsed Time: " << elapsed.count() << " seconds" << std::endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/224221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux(22):X Window 设定介绍

X Window System X Window System 是个非常大的架构&#xff0c;他还用到网络功能。也就是说&#xff0c;其实 X 窗口系统是能够跨网络与跨操作系统平台的。 X Window系统最早是由 MIT (Massachusetts Institute of Technology&#xff0c;麻省理工学院) 在1984年发展出来的&…

day13 栈与队列(三)

day13 2023.12.11 代码随想录 今天刚出差回来&#xff0c;拉下了很多天的博客&#xff0c;慢慢补吧&#xff0c;每天做当天的任务&#xff0c;再补一篇博客。 1. 239滑动窗口最大值 本题就是每次窗口内容放在一个单调队列中&#xff0c;那么每次直接返回队头元素&#xff08;最…

register_chrdev函数使用

static struct class *led_class;static int major 0; /*记得static 不然可能会出现外部.c调用这个变量的可能*/static struct file_operations led_drv {.owner THIS_MODULE,.open led_drv_open,.read led_drv_read,.write led_drv_write,.release led_drv…

Python中的继承:概念、用法与示例

目录 一、引言 二、继承的概念 三、继承的用法 1、继承父类的属性和方法 2、添加新的属性和方法 3、覆盖父类的方法 四、示例代码展示 五、继承中的多态性 六、继承中的封装和抽象 七、继承中的多重继承 总结 一、引言 面向对象编程&#xff08;OOP&#xff09;是一…

「完美世界」石昊被诓入至尊道场,修炼无敌道,打跑天仙书院弟子

Hello,小伙伴们&#xff0c;我是拾荒君。 《完美世界》这部国漫&#xff0c;在粉丝的翘首期盼中&#xff0c;终于迎来了第141集的更新。这一集的内容&#xff0c;对于喜欢石昊和至尊道场劫难的观众来说&#xff0c;可谓是扣人心弦&#xff0c;让人目不转睛。 在这一集中&#…

【信息学奥赛】拼在起跑线上,想入道就别落下自己!

编程无难事&#xff0c;只怕有心人&#xff0c;学就是了&#xff01; 文章目录 1 信息学奥赛简介2 信息学竞赛的经验回顾3 优秀参考图书推荐《信息学奥赛一本通关》4 高质量技术圈开放 1 信息学奥赛简介 信息学奥赛&#xff0c;作为全国中学生学科奥林匹克“五大学科竞赛”之一…

ChatGPT使用:一个发包机器人的提示词

发包机器人&#xff1a; 设想&#xff1a;目前项目组有n条打包线会输出多个包&#xff0c;用户想获取最新的包是比较困难的&#xff0c;难点在于 1. 分支多&#xff1a;trunk&#xff0c;release&#xff0c;outer等&#xff0c;至少有3个分支&#xff1b; 2. 多平台&#x…

C++ 面向对象模型 小知识点

空类 大小 空类的 sizeof 结果是 1。原因&#xff1a;每个对象都应该在内存上有独一无二的地址&#xff0c;因此给空对象分配 1 个字节空间。 当定义了一个变量后&#xff0c;则类的大小为这个变量的大小。 类中 变量和函数是分开存储的。 静态成员变量&#xff0c;静态成员函数…

浅谈“前端已死”论

自我介绍一下&#xff0c;我目前是一个C#后端开发工程师&#xff0c;题目中所述的java和前端貌似跟我没有太大的关系&#xff0c;我想说&#xff0c;在这IT行业内&#xff0c;所有的东西都是互通的&#xff0c;最近公司也在搞B/S&#xff0c;也是使用了javavue的模式&#xff0…

Spring+SpringMVC+SpringBoot

Spring bean bean基础配置 bean别名配置 注意事项&#xff1a; 获取bean无论是通过id还是name获取。如果无法获取到&#xff0c;将抛出异常NoSuchBeanDefinitionException bean的作用范围配置 适合交给容器进行管理的bean 表现层对象、业务层对象、数据层对象、工具对象 不…

Vue3+ts实现页面跳转及参数传递

## 列表页 <script lang"ts" setup> import { reactive, toRefs } from vue // 1 引入useRouter路由信息方法 import { useRouter } from vue-router // 2 获取实例 const router useRouter()const gotoDetail (index: string) > {router.push({path: …

《opencv实用探索·十九》光流法检测运动目标

前言 光流法&#xff08;Optical Flow&#xff09;是计算机视觉中的一种技术&#xff0c;用于估计图像中相邻帧之间的像素位移或运动。它是一种用于追踪图像中物体运动的技术&#xff0c;可以在视频中检测并测量物体的运动轨迹。 光流的直观理解&#xff1a; 光流是一个视频中两…

智能物联网(IoT)VS AI物联网(AIoT)

#IoT# #AIoT# 智能物联网&#xff08;IoT&#xff09;和AI物联网&#xff08;AIoT&#xff09;区别 概念&#xff1a; 物联网&#xff08;IoT&#xff09;&#xff1a;即“万物相连的互联网”&#xff0c;是在互联网基础上延伸和扩展的网络&#xff0c;将各种信息传感设备与网…

离散型制造企业MES系统行业应用

离散型制造企业具有产品种类多、生产周期长、生产过程复杂等特点&#xff0c;因此&#xff0c;采用先进的生产管理系统对于提高企业的生产效率和管理水平至关重要。其中&#xff0c;制造执行系统&#xff08;MES&#xff09;在离散型制造企业中得到了广泛应用&#xff0c; 一、…

TensorBoard使用和问题解决

一、什么是TensorBoard? TensorBoard 是一组用于数据可视化的工具&#xff0c;它包含在流行的开源机器学习库 Tensorflow 中。TensorBoard 的主要功能包括&#xff1a; 可视化模型的网络架构跟踪模型指标&#xff0c;如损失和准确性等检查机器学习工作流程中权重、偏差和其他…

PDI/Kettle-9.2.0.0-R(对应jdk1.8)源码编译问题记录及源码结构简介

目录 &#x1f4da;第一章 前言&#x1f4d7;背景&#x1f4d7;目的&#x1f4d7;总体方向 &#x1f4da;第二章 代码结构初识基本结构&#x1f4d7;代码模块详情 ⁉️问题记录❓问题一&#xff1a;代码分支哪些是发布版本❗答&#xff1a;后缀-R的版本 ❓问题二&#xff1a;50…

Milesight VPN server.js 任意文件读取漏洞(CVE-2023-23907)

0x01 产品简介 MilesightVPN 是一款软件&#xff0c;一个 Milesight 产品的 VPN 通道设置过程更加完善&#xff0c;并可通过网络服务器界面连接状态。 0x02 漏洞概述 MilesightVPN server.js接口处存在文件读取漏洞&#xff0c;攻击者可通过该漏洞读取系统重要文件&#xff…

dockerfite创建镜像---INMP+wordpress

目录 搭建dockerfile---lnmp 创建nginx镜像 运行 创建数据库镜像 运行 ​编辑 创建php镜像 运行 搭建dockerfile---lnmp 在192.168.10.201 服务IP地址nginx 172.111.0.10 dockernginxmysql172.111.0.20dockermysqlphp172.111.0.30dockerphp 创建nginx镜像 路径 vim /…

准备论文replication的注意事项

如果实验代码开源&#xff0c;那么论文的结尾可以写上这句话 DATA AVAILABILITY The replication of this paper is publicly available. 那么replication应当注意哪些事项 准备一个readme.md&#xff0c;对整个仓库的内容和实验结果的复现步骤进行说明。匿名原则 &#xff1a…

解锁知识的新大门:自建知识付费小程序的技术指南

在数字化时代&#xff0c;知识付费小程序的崛起为创作者和学习者提供了全新的学习和分享方式。本文将以“知识付费小程序源码”为关键词&#xff0c;从技术角度出发&#xff0c;为你展示如何搭建一个独具特色的知识付费平台。 步骤1&#xff1a;选择适用的知识付费小程序源码…