chrono::time_point_cast
时间: 2024-02-04 14:02:42 浏览: 204
`chrono::time_point_cast` 是 C++ 标准库 `<chrono>` 中的一个函数模板,用于将一个时间点(`time_point`)转换为另一个时钟(`Clock`)的时间点。
该函数的声明如下:
```cpp
template <class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& t);
```
其中,`ToDuration` 是目标时钟(`Clock`)的时间单位类型,`Clock` 和 `Duration` 是原始时间点的时钟和时间单位类型。
使用该函数可以将不同时钟的时间点相互转换,例如将 `system_clock` 的时间点转换为 `steady_clock` 的时间点。转换后的时间点的值将被截断或者扩展,以适应目标时钟的时间精度。
需要注意的是,`time_point_cast` 转换的时钟类型必须是可转换的,即目标时钟的时间精度必须不小于原始时钟的时间精度。
举个例子,假设有一个 `system_clock` 的时间点 `tp_sys`,我们想将其转换为 `steady_clock` 的时间点,可以这样做:
```cpp
auto tp_steady = std::chrono::time_point_cast<std::chrono::steady_clock::duration>(tp_sys);
```
转换后的 `tp_steady` 的值将被截断或者扩展,以适应 `steady_clock` 的时间精度。
阅读全文