我目前正在 C++ 中进行一个练习,我将创建一个名为 TimerClass 的结构,其构造函数记录当前时间和一个析构函数,记录当前时间并将其从构造时间中减去(即构造函数中的当前时间)并将其打印到控制台。这是我到目前为止的代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <chrono>
#include <ctime>
struct TimerClass {
    TimerClass(time_t* timestamp) : timestamp(timestamp) {
        std::chrono::system_clock::now();
        printf("The current time is: %s\n", timestamp);
    }
    ~TimerClass() {
        printf("Time since last construction: %s\n", timestamp);
    }
private:
    time_t* timestamp;
};
Run Code Online (Sandbox Code Playgroud)
我曾尝试在网上查找一些可能的解决方案,但运气不佳。我是 C++ 新手,我正在学习的书没有说如何记录时间。
std::chrono库是您方案的不错选择。steady_clock由于不受系统时间的影响,所以更适合这种工作,所以在演示中使用它。
另一个提示,除非您没有其他选择,否则不要再使用指针。以“c”为前缀的头文件表示来自 C 语言的库,因此最好避免使用它们。
这是演示,也许是您了解chrono库的起点。
#include <iostream>
#include <chrono>
#include <thread>
struct TimerClass {
    TimerClass() 
        :   m_start { std::chrono::steady_clock::now() }
    {}
    ~TimerClass() {
        using namespace std::chrono;
        auto life = steady_clock::now() - m_start;
        std::cout << "Duration in ms " << duration_cast<milliseconds>( life ).count() << std::endl;
        std::cout << "Duration in us " << duration_cast<microseconds>( life ).count() << std::endl;
    }
private:
    std::chrono::steady_clock::time_point m_start;
};
int main()
{
    TimerClass t;
    {
        TimerClass t_2;
        std::this_thread::sleep_for( std::chrono::seconds { 1 } );
    }
    std::this_thread::sleep_for( std::chrono::milliseconds { 300 } );
}
Run Code Online (Sandbox Code Playgroud)