c与c++中的time相关函数[VC/C++编程]
本文“c与c++中的time相关函数[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
本文从介绍底子概念动手,探究了在C/C++中对日期和时间操作所用到的数据构造和函数,并对计时、时间的获得、时间的计算和显示格局等方面举行了阐述.本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据构造的具体利用办法.
关键字:UTC(世界尺度时间),Calendar Time(日用时间),epoch(时间点),clock tick(时钟计时单元)
1.概念
在C/C++中,对字符串的操作有很多值得注意的问题,一样,C/C++对时间的操作也有很多值得大家注意的地方.近来,在技术群中有很多网友也多次问到 过C++语言中对时间的操作、获得和显示等等的问题.下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的利用办法.
通过学习很多C/C++库,你可以有很多操作、利用时间的办法.但在这之前你需求理解一些“时间”和“日期”的概念,主要有以下几个:
Coordinated Universal Time(UTC):调和世界时,又称为世界尺度时间,也就是大家所熟知的格林威治尺度时间(Greenwich Mean Time,GMT).比方,中国内地的时间与UTC的时差为+8,也就是UTC+8.美国是UTC-5.
Calendar Time:日用时间,是用“从一个尺度时间点到此时的时间经过的秒数”来表示的时间.这个尺度时间点对差别的编译器来说会有所差别,但对一个编译系统来 说,这个尺度时间点是不变的,该编译系统中的时间对应的日用时间都通过该尺度时间点来衡量,所以可以说日用时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个尺度时间点来说,日用时间都是一样的.
epoch:时间点.时间点在尺度C/C++中是一个整数,它用此时的时间和尺度时间点相差的秒数(近日用时间)来表示.
clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU掌握的.一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位.
我们可以利用ANSI尺度库中的time.h头文件.这个头文件中定义的时间和日期所利用的办法,无论是在构造定义,还是命名,都具有明显的C语言气势.下面,我将阐明在C/C++中怎样利用日期的时间功效.
2. 计时
C/C++中的计时函数是clock(),而与其相关的数据范例是clock_t.在MSDN中,查得对clock函数定义以下:
clock_t clock( void );
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock).此中clock_t是用来保存时间的数据范例,在time.h文件中,我们可以找到对 它的定义:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
很明显,clock_t是一个长整形数.在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义以下:
#define CLOCKS_PER_SEC ((clock_t)1000)
可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1.下面举个例子,你可以利用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:
void elapsed_time()
{
printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);
}
当然,你也可以用clock函数来计算你的机械运行一个循环大概处理别的事件到底花了多少时间:
#include “stdio.h”
#include “stdlib.h”
#include “time.h”
int main( void )
{
long i = 10000000L;
clock_t start, finish;
double duration;
/* 丈量一个事件持续的时间*/
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- ) ;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
system("pause");
}
在笔者的机械上,运行后果以下:
Time to do 10000000 empty loops is 0.03000 seconds
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的.在尺度C/C++中,最小的计时单位是一毫秒.
以上是“c与c++中的time相关函数[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |