C++实现一个简单的计时器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++实现一个简单的计时器相关的知识,希望对你有一定的参考价值。

上次给别人写的,只写分钟和秒数,没弄到毫秒去!
我把代码给你吧,希望对你有帮助,文件类容都有注释的。
敲入回车键开始计时。
#include<iostream>
#include<iomanip>
#include<windows.h>
using namespace std;
int main()

int second=0,minute=0;
if(getchar()=='\n') //执行的入口 “回车键 ” 开始读表
while(1) //一直循环下去

if(59==second) //秒数到了59 变向分钟进位1 并且second重置为0

minute+=1;
second=0;

system("cls"); //清理屏幕 需要<windows.h>
//下面是C++的输出格式控制 在<iomanip.h>中
cout<<right<<setfill('0')<<setw(2)<<minute
<<':'
<<right<<setw(2)<<second<<setfill('0');

Sleep(1000);//1s刚好是最后个数字跳一次的时间
second++; //秒数累加


return 0;
参考技术A #include<stdio.h>
#include<windows.h>

void main()

int counter = 0;
for (int i = 0; i < 20; i++)

printf("%d\n", counter);
Sleep(1000);
counter ++;

追问

我是想实现一个计时器类。。。。

C++ 简单的计时器/刻度函数

【中文标题】C++ 简单的计时器/刻度函数【英文标题】:C++ simple timer/tick function 【发布时间】:2014-07-26 22:33:02 【问题描述】:

正如标题所说,我想创建一个简单的计时器/滴答功能,例如 5 分钟,这样我就可以调用另一个功能,然后计时器再次启动,依此类推,但不使用睡眠或时钟功能。那么是否有任何功能或方法可以例如以秒为单位计数?感谢您的帮助。

【问题讨论】:

sleep 有什么问题?这是你真正想做的事情,还是编码难题? “不使用睡眠或时钟功能”:如果没有时钟,您将如何测量 5 分钟? std::thread + std::chrono 这里应该够用了。 我试过睡眠,但它完全暂停了程序,这不好也尝试了倒计时 int 但我想要一些“实时”的东西,因为你知道每个系统计数更快或更慢,我还尝试了一些具有时钟功能的东西,它运行良好,但我不知道我觉得它不是很“清晰”的编码它应该适用于 windows 所以你说时钟功能没问题? 如果使用正确,是的:在您的问题中显示您的计时器代码(带有时钟)以获得准确的答案。 【参考方案1】:

虽然您说要避免“时钟功能”,但我不明白如何在没有时钟的情况下计算 5 分钟。这是一个非常基本但便携的计时器。

std::thread 用于创建线程 std::chrono 用作时钟

结果foo() 方法每 5 分钟调用一次。


#include <thread>
#include <iostream>

void foo()

    std::cout << "Hello !\n";   


int main()

    std::thread([&]
    
        while(true)
        
            // Wait 5 minutes
            std::this_thread::sleep_for(std::chrono::minutes(5));
            // Call our method
            foo();
        
    ).detach();

    // Execution continues ...
    std::cin.get();


注意事项:

我将 lambda 传递给线程,但任何可调用对象都可以。 std::chrono 有很多很酷的东西来控制日期和时间,你可以很容易地用它来调整你的计时器。

【讨论】:

以上是关于C++实现一个简单的计时器的主要内容,如果未能解决你的问题,请参考以下文章

C++ 简单的计时器/刻度函数

C++ Boost ASIO 简单的周期性定时器?

easyx 制作C++计时器

js实现拍简单倒计时功能

在java中如何让定时器只启动一次?

原生js实现一个简单的倒计时功能