我正在编写一个将在Solaris机器上使用的程序.我需要一种方法来跟踪自程序启动以来经过的秒数.我在这里说的很简单.例如,我将有一个int秒= 0; 但是如何在每秒通过时更新秒变量?
似乎我所看到的一些不同的时间函数只能在Windows机器上运行,所以我只是不确定.
任何建议,将不胜感激.
谢谢你的时间.
Mic*_*urr 23
一个非常简单的方法:
#include <time.h>
time_t start = time(0);
double seconds_since_start = difftime( time(0), start);
Run Code Online (Sandbox Code Playgroud)
这样做的主要缺点是您必须轮询更新.您需要平台支持或其他一些lib /框架才能在事件基础上执行此操作.
Cas*_*yer 11
#include <chrono>
#include <iostream>
int main(int argc, char *argv[])
{
auto start_time = std::chrono::high_resolution_clock::now();
auto current_time = std::chrono::high_resolution_clock::now();
std::cout << "Program has been running for " << std::chrono::duration_cast<std::chrono::seconds>(current_time - start_time).count() << " seconds" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果你只需要秒的分辨率,那么std :: steady_clock就足够了.
你正在向后接近它。您不必担心每秒更新一个变量,只需在程序中从当前时间开始初始化一个变量,然后每当您需要知道已经过去了多少秒时,就从初始时间中减去现在的当前时间。这样开销就少得多,而且不需要维护一些与时间相关的变量更新。