C 中的秒表类

Stopwatch class in c++

本文关键字:      更新时间:2023-10-16

我必须在C 中编写秒表类。我试图做到这一点的方式是定义一个变量来保存圈(命名为"时间")和我用来查看手表是否启动或停止的bool。输入char时,计时器应启动并设置time1。输入另一个字符时,bool切换到false并设置time2,然后打印time2-time1。这应该可以重复,直到输入'n'

我也不太确定我知道时间_t的时间_t。在我的代码中,我每次尝试测量膝盖的间隔时都会获得±40个单位的返回值,我猜这是运行时程序的,实际上不是间隔的时间。

#ifndef stoppuhr_hpp
#define stoppuhr_hpp
#include <iostream>
#include <time.h>
class Stoppuhr{
private:
    bool running;
    clock_t time;
public:
    void pushButtonStartStop () {
        char t=0;
        running=false;
        time=0;
        std::cout << "to start/stop watch please press a key, to end 
clock type 'n' " << std::endl;
        clock_t time1=0;
        clock_t time2=0;
        std::cout << time;
        while (t!='n') {
            std::cin >> t;
            running= !running;
            if (running) {
                time1=clock();
            }
            else {
                time2=clock();
                time+=time2-time1;
                std::cout << time << std::endl;
            }
        }
    }
};
#endif /* stoppuhr_hpp */

我也不确定我了解time time_t所在的单位。

指定了由time_t代表的时间单位。通常,它代表秒,如Posix所指定的。

但是,您不会在程序中的任何地方使用time_t

我猜是程序的运行时

我建议不要猜测,而是要阅读文档。clock()返回程序使用的处理器时间,因为某个时间点。因此,扣除clock()返回的两个时间点将为您提供这些时间点之间使用的处理器时间。clock_t的单位是1 / CLOCKS_PER_SEC秒。

我每次获得±40个单位的返回值

clock的粒度已指定。您的系统可能是40个单元。该程序在等待输入时几乎不会消耗任何处理器时间。


我必须写一个秒表类

秒表通常测量现实世界时间,即壁时钟时间。测量处理器时间对于此任务是徒劳的。

我建议改用std::chrono::steady_clock::now

如果您坚持使用time.h,则可以使用 time(nullptr)来获取壁时钟时间,但我不建议它。

相关文章:
  • 没有找到相关文章