用c ++编写的秒表类

时间:2017-12-08 23:51:22

标签: c++ time time.h

我必须用c ++写一个秒表类。我尝试这样做的方法是定义一个变量来保存圈数(名为“时间”)和bool,我用它来查看手表是启动还是停止。输入char时,计时器应该开始并设置time1。当输入另一个字符时,bool会切换到false并设置time2,然后打印time2-time1。这应该是可重复的,直到输入'n'为止

我也不太清楚我是否理解time_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 */

1 个答案:

答案 0 :(得分:0)

  

我也不太清楚我明白time_t的时间单位。

display: block; float: left;表示的时间单位是指定的实现。通常,它表示由POSIX指定的秒数。

但是,您不能在程序中的任何位置使用time_t

  

我猜是程序的运行时

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

  

我每次都得到±40单位的返回值

1 / CLOCKS_PER_SEC的粒度是指定的实现。它可能是您系统上的40个单位。该程序在等待输入时几乎不消耗任何处理器时间。

  

我必须写一个秒表课

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

我建议改用clock

如果您坚持使用time.h,那么您可以使用std::chrono::steady_clock::now来获取挂钟时间,但我不推荐它。