我有一个具有此签名的函数:
void checkTime (const std::chrono::time_point<std::chrono::system_clock> &time)
{
//do stuff...
}
Run Code Online (Sandbox Code Playgroud)
我需要这样调用上面的函数:
void wait_some_time (unsigned int ms)
{
//do stuff...
checkTime(ms); //ERROR: How can I cast unsigned int to a time_point<system_clock> as now() + some milliseconds?
//do more stuff...
}
Run Code Online (Sandbox Code Playgroud)
我想这样使用:
wait_some_time(200); //wait now + 200ms
Run Code Online (Sandbox Code Playgroud)
问题:
如何将 'unsigned int' 转换为具有毫秒值的 const std::chrono::time_point ?
谢谢!
如何将 'unsigned int' 转换为具有毫秒值的 const std::chrono::time_point ?
Atime_point是一个时间点,表示为某个纪元的偏移量(time_point 的“零”值)。system_clock纪元为 1970 年 1 月 1 日 00:00:00 。
您的unsigned int只是一个偏移量,它不能直接转换为 a,time_point因为它没有与之关联的纪元信息。
因此要回答“如何将 an 转换unsigned int为 a time_point?”的问题。你需要知道unsigned int代表什么。自纪元开始以来的秒数?距离您上次调用该函数已经过去了多少小时?从现在开始还有几分钟吗?
如果它的意思是“现在 + N 毫秒”,那么 N 对应于 a duration,以毫秒为单位测量。您可以轻松地将其转换为std::chrono::milliseconds(ms)(其中类型milliseconds是 typedef,例如std::chrono::duration<long long, std::milli>表示为以千分之一秒为单位的有符号整数类型的持续时间)。
然后,要获取与“now + N 毫秒”对应的 time_point,只需将其添加duration到time_point从相关时钟获得的“now”值:
std::chrono::system_clock::now() + std::chrono::milliseconds(ms);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10841 次 |
| 最近记录: |