用 C++ 制作倒数计时器

Suraj P 2023年1月30日 2022年4月20日
  1. 在 Unix 环境中制作倒数计时器
  2. 在 Windows 中制作倒数计时器
  3. 在 C++ 中制作一个向上计数计时器
用 C++ 制作倒数计时器

本文将教授如何在 C++ 中制作一个向上和向下计数的计时器。首先,让我们看看如何在 C++ 中制作倒数计时器。

它的工作方式是我们从用户那里获取分钟和秒作为输入,然后在我们的程序中使用循环,我们将以相反的顺序或倒计时打印秒。

我们可以使用类似 while 循环或 for 循环这样的循环,它会倒计时直到数字达到 1,在其中,我们需要一种机制来暂停程序 1 秒以查看变化。

我们在类 Unix 环境和 Windows 中有不同的函数(系统调用)来暂停程序或使其睡眠。但是,它们具有相同的功能。

在 Unix 环境中制作倒数计时器

任何类 Unix 机器,Linux 或 Ubuntu,都有一个名为 usleep 的函数,它需要以微秒为单位的时间让程序休眠。我们需要将值作为 1000000 传递以暂停执行一秒钟。

此方法在 unistd.h 头文件中定义。

示例代码:

#include <iostream>
#include <ctime>
#include <unistd.h>
using namespace std;

string getPresentDateTime()
{
    time_t tt;
    struct tm *st;

    time(&tt);
    st = localtime(&tt);
    return asctime(st);
}

int main()
{
    int seconds;
    cout<< "Enter total number seconds for the counter"<<endl;
    cin >> seconds;

    while(seconds>= 1){
        cout<<"Counter : "<<seconds<<" : " +getPresentDateTime()<<endl;
        usleep(1000000);
        seconds--;
    }
}

在上述程序中,我们使用 getPresentDateTime() 方法从系统获取当前日期和时间。

输出:上面的程序是在 Ubuntu 中执行的。要在类 Unix 环境中执行它,保存文件,使用 g++ 编译它,然后键入 ./a.out 来执行它。

g++ first.cpp   //executed in ubuntu
 ./a.out

Enter total number seconds for the counter
7
Counter : 7 : Sun Mar 13 01:31:56 2022

Counter : 6 : Sun Mar 13 01:31:57 2022

Counter : 5 : Sun Mar 13 01:31:58 2022

Counter : 4 : Sun Mar 13 01:31:59 2022

Counter : 3 : Sun Mar 13 01:32:00 2022

Counter : 2 : Sun Mar 13 01:32:01 2022

Counter : 1 : Sun Mar 13 01:32:02 2022

在 Windows 中制作倒数计时器

一切都和我们上面所做的一样;唯一的区别是我们必须包含 windows.h 而不是 unistd.h。而不是 usleep,我们必须使用 sleep() 方法。

sleep() 方法需要以毫秒为单位的时间。

示例代码:

#include <iostream>
#include <ctime>
#include <Windows.h>
using namespace std;

string getPresentDateTime()
{
    time_t tt;
    struct tm *st;

    time(&tt);
    st = localtime(&tt);
    return asctime(st);
}

int main()
{
    int seconds;
    cout<< "Enter total number seconds for the counter"<<endl;
    cin >> seconds;

    while(seconds>= 1){
        cout<<"Counter : "<<seconds<<" : " +getPresentDateTime()<<endl;
        Sleep(1000);
        seconds--;
    }
}

输出:上述程序在 Windows 上的 IDE 上运行。

Enter total number seconds for the counter
10
Counter : 10 : Sun Mar 13 01:42:13 2022

Counter : 9 : Sun Mar 13 01:42:14 2022

Counter : 8 : Sun Mar 13 01:42:15 2022

Counter : 7 : Sun Mar 13 01:42:16 2022

Counter : 6 : Sun Mar 13 01:42:17 2022

Counter : 5 : Sun Mar 13 01:42:18 2022

Counter : 4 : Sun Mar 13 01:42:19 2022

Counter : 3 : Sun Mar 13 01:42:20 2022

Counter : 2 : Sun Mar 13 01:42:21 2022

Counter : 1 : Sun Mar 13 01:42:22 2022

现在让我们看一个递增计数器。

在 C++ 中制作一个向上计数计时器

它的实现就像一个递减计数器,唯一的区别是我们以转发方式运行循环,这是一种增量方法。

示例代码:Windows 环境中的向上计数器。

#include <iostream>
#include <ctime>
#include <Windows.h>
using namespace std;

string getPresentDateTime()
{
    time_t tt;
    struct tm *st;

    time(&tt);
    st = localtime(&tt);
    return asctime(st);
}

int main()
{
    int seconds;
    cout<< "Enter total number seconds for the counter"<<endl;
    cin >> seconds;

    int count=0;

    while(count!=10){
        cout<<"Counter : "<<seconds<<" : " +getPresentDateTime()<<endl;
        Sleep(1000);
        seconds++;
        count++;
    }
}

在上面的代码中,我们将秒数增加 10 次。为了跟踪它,我们引入了一个变量 count,它在从给出 seconds 输入的时间开始 10 秒后停止。

输出:

Enter total number seconds for the counter
5
Counter : 5 : Sun Mar 13 02:15:42 2022

Counter : 6 : Sun Mar 13 02:15:43 2022

Counter : 7 : Sun Mar 13 02:15:44 2022

Counter : 8 : Sun Mar 13 02:15:45 2022

Counter : 9 : Sun Mar 13 02:15:46 2022

Counter : 10 : Sun Mar 13 02:15:47 2022

Counter : 11 : Sun Mar 13 02:15:48 2022

Counter : 12 : Sun Mar 13 02:15:49 2022

Counter : 13 : Sun Mar 13 02:15:50 2022

Counter : 14 : Sun Mar 13 02:15:51 2022
Author: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

相关文章 - C++ Timer