我正在尝试做一些我认为非常简单的事情,但是到处都是,我无法弄清楚。我还是C ++的新手,对模板等没有很好的理解。

我只需要一个函数即可测量从程序启动到某个特定点的时间(以毫秒为单位),例如:

class timeCounter {

    private:
        long startTime;
        long currentTime;
        long timeDifference;
    public:
        long getTime();
}

timeCounter::timeCounter () {
    startTime = time.now();
}

long timeCounter::getTimePassed () {
    currentTime = time.now();
    timeDifference = timeNow - timeStart;
    return timeDifference;
}


我尝试使用clock() / CLOCKS_PER_SECONDS,但结果慢于一秒钟。

谁能帮我吗?

非常感谢你!

最佳答案

我最近正在编写一个类似的系统,以获取游戏引擎的增量时间。

使用std::chrono库,这是一个示例:

#include <iostream>
#include <chrono>
#include <thread>

class timer
{
    // alias our types for simplicity
    using clock             = std::chrono::system_clock;
    using time_point_type   = std::chrono::time_point < clock, std::chrono::milliseconds > ;
public:
    // default constructor that stores the start time
    timer()
    {
        start = std::chrono::time_point_cast<std::chrono::milliseconds>(clock::now());
    }

    // gets the time elapsed from construction.
    long /*milliseconds*/ getTimePassed()
    {
        // get the new time
        auto end = clock::now();

        // return the difference of the times
        return (end - start).count();
    }

private:
    time_point_type start;
};

int main()
{
    timer t;

    std::this_thread::sleep_for(std::chrono::seconds(5));

    std::cout << t.getTimePassed();

    std::cin.get();
}

09-06 07:32