用 C++ 制作倒数计时器
本文将教授如何在 C++ 中制作一个向上和向下计数的计时器。首先,让我们看看如何在 C++ 中制作倒数计时器。
它的工作方式是我们从用户那里获取分钟和秒作为输入,然后在我们的程序中使用循环,我们将以相反的顺序或倒计时打印秒。
我们可以使用类似 while
循环或 for
循环这样的循环,它会倒计时直到数字达到 1,在其中,我们需要一种机制来暂停程序 1 秒以查看变化。
我们在类 Unix 环境和 Windows 中有不同的函数(系统调用)来暂停程序或使其睡眠
。但是,它们具有相同的功能。
在 Unix 环境中制作倒数计时器
任何类 Unix 机器,Linux 或 Ubuntu,都有一个名为 usleep
的函数,它需要以微秒为单位的时间让程序休眠。我们需要将值作为 1000000
传递以暂停执行一秒钟。
此方法在 unistd.h
头文件中定义。
示例代码:
#include <unistd.h>
#include <ctime>
#include <iostream>
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 <Windows.h>
#include <ctime>
#include <iostream>
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 <Windows.h>
#include <ctime>
#include <iostream>
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