【发布时间】:2019-12-03 20:41:06
【问题描述】:
我尝试将两个时间点之间经过的时间以毫秒为整数或以秒为双倍。 我试图在某物上施加 4m/s² 的恒定加速度。我已经收到了:
int main() {
double accel = 4, velocity = 0;
auto start = chrono::system_clock::now();
sleep(3);
auto ende = chrono::system_clock::now();
chrono::duration<double> elapsed_seconds = ende - start;
velocity += accel * elapsed_seconds; //This is where I don't know what to put instead of "elapsed_seconds"
cout << "Velocity after " << elapsed_seconds << "s is " << velocity << "m/s" << endl;
return 0;
}
但正如您所见,它不起作用。我已经找到了类似的东西
chrono::duration_cast<ms>(elapsed_time);
但我无法让它工作。你有什么想法吗?
【问题讨论】:
-
您可以使用
elapsed_seconds.count()从elapsed_seconds中提取底层double。这将代表秒数。 -
auto elapsed_seconds = chrono::duration_cast<chrono::seconds>(ende-start).count(); -
旁注:您可能应该为此使用
steady_clock,因为您不希望您的速度计算受到system_clock突然变化的影响(例如时钟调整等)。 -
@WhozCraig 这不会返回
double,对吗?我在想double elapsed_seconds = std::chrono::duration<double>(ende - start).count();会更好。 -
@TedLyngmo 不,不会,你是对的。但是,将
seconds更改为milliseconds将满足 OP 显然想要的整数选项。火鸡吃多了。还在打盹=P
标签: c++ time chrono elapsedtime