C++跟踪自程序启动以来经过的秒数

Noo*_*oob 12 c++ time

我正在编写一个将在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 /框架才能在事件基础上执行此操作.

  • `time()`返回挂钟时间,`clock()`返回处理器时间. (3认同)

Cas*_*yer 11

使用std :: chrono.

#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就足够了.

  • 我为你的C++ 11方法给出了你的答案,但不幸的是它在我的GCC 4.8.4上没有编译,启用了C++ 11.有用的是在输出中使用`duration_cast`:`std :: chrono :: duration_cast <std :: chrono :: duration <float >>(current_time - start_time).count()`. (2认同)

pri*_*ing 6

你正在向后接近它。您不必担心每秒更新一个变量,只需在程序中从当前时间开始初始化一个变量,然后每当您需要知道已经过去了多少秒时,就从初始时间中减去现在的当前时间。这样开销就少得多,而且不需要维护一些与时间相关的变量更新。


Lef*_*une 0

您只需要存储应用程序启动时的日期/时间。每当您需要显示程序运行的时间时,获取当前日期/时间并减去应用程序启动的时间。