std::chrono计算不同比例的差异
std::chrono calculate the difference in different ratio
我的标题可能没有太大帮助,我有一个std::chrono::纳秒,但我被要求串行化,并在JSON中提供第二个,然后是纳秒作为不同的值。
因此,尽管我的结构成立:
struct time
{
...
std::chrono::nanoseconds timepoint;
};
当被要求几秒钟时,我做
uint32_t sec() const
{
return std::chrono::duration_cast<std::chrono::seconds>(timepoint_).count();
}
然而,当被问及纳秒时,我想要以纳秒为单位的分辨率,但没有秒(只有最不重要的值?)然而,以纳秒为条件的投射会同时返回秒和更高的分辨率。
uint64_t nanosec() const
{
return std::chrono::duration_cast<std::chrono::nanoseconds>(timepoint_).count();
}
如何计算实际增加的分辨率(例如,没有实际秒的纳秒)?
您可以使用std::duration_cast
到std::seconds
检索秒,使用模运算符检索纳秒
template <typename T>
std::pair<T, T> split (std::chrono::duration<T, std::nano> const& duration) {
using seconds = std::chrono::duration<T>;
return {std::chrono::duration_cast<seconds>(duration).count(),
(duration % seconds{1}).count()};
}
这个页面上有一个很好的例子,展示了在std::chrono::duration
上使用算术运算符来实现您想要的目标。
user@Xarn提供了解决方案:
auto sec = std::chrono::duration_cast<std::chrono::seconds>(tp);
auto nsec = std::chrono::duration_cast<std::chrono::nanoseconds>(tp);
auto diff = std::chrono::duration_cast<std::chrono::nanoseconds>(nsec - sec).count();
使纳秒分辨率没有秒。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- 从持续时间构造std::chrono::system_clock::time_point
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何在c++迭代器类型中包装std::chrono
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 使用boost::chrono,如何从单独的年、月、日、小时、分钟、秒计算自epoch UTC以来的毫秒
- 如何使用Chrono和OpenCV计算实时视频流的FPS
- 使用std::chrono计算持续时间,当它应该花费很长时间时,结果是0纳秒
- 使用chrono c++库计算时间戳的差异
- std::chrono计算不同比例的差异