一般我们常见的延迟方式是通过编写循环体,来实现简单的不太精准延时方式,例如下面给出的例子,
int wait;
while(wait < 1000)
wait++;
但是由于处理器速度容易突变,所以这样的计时不是很准确,此外在编写延时代码时,不同的芯片还要考虑处理器的执行速度,因此不是很方便。
而在C++库中存在一个clock()函数,该函数可以返回程序开始执行后所用的系统时间。注意这里返回的时间是系统时间不是对应的秒数,因此我们需要一个已经定义好的符号常量来进行转换。
CLOCKS_PER_SEC ,这个符号常量所代表的意思是,一秒对应的时间单位数,因此将时间单位数除以这个符号常量,我们就可以得到秒数。
#include <iostream>
#include <ctime> // 需要包含到的头文件
int main()
{
using namespace std;
cout << "Enter the delay time, in seconds: ";
float secs;
cin >> secs;// 输入秒数
clock_t delay = secs * CLOCKS_PER_SEC; // 将秒换算成系统时间
cout << "starting\a\n";
clock_t start = clock(); // 保存开始时间
while (clock() - start < delay ) // 直到计时结束
; // 函数体内 不执行任何操作
cout << "done \a\n";
return 0;
}
通过记录当前的系统时间,并与所设延迟的开始时间做比较,就可以实现计时效果了