std::chrono::duration_cast
是 C++ 标准库中 <chrono>
头文件提供的一个模板函数,用于将一个时间间隔(duration)对象转换成另一个时间间隔类型。这在你需要将时间间隔表示为一种特定单位(如秒、毫秒、微秒等)时非常有用。
std::chrono::duration_cast
接受一个时间间隔类型作为模板参数,并接受一个时间间隔对象作为函数参数。它返回一个表示相同时间长度但可能具有不同精度的新时间间隔对象。
下面是一个使用 std::chrono::duration_cast
的例子:
#include <iostream>
#include <chrono>
int main() {
// 创建一个表示 1.5 秒的时间间隔(以秒为单位,具有浮点精度)
std::chrono::duration<double> sec(1.5);
// 将时间间隔转换为毫秒(整数表示)
auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(sec);
// 输出转换后的毫秒数
std::cout << millis.count() << " milliseconds\n";
// 也可以转换为其他单位,比如微秒
auto micros = std::chrono::duration_cast<std::chrono::microseconds>(sec);
std::cout << micros.count() << " microseconds\n";
return 0;
}
在这个例子中,我们首先创建了一个以秒为单位、具有浮点精度的时间间隔 sec
,它表示 1.5 秒。然后,我们使用 std::chrono::duration_cast
将这个时间间隔转换为毫秒和微秒,并输出转换后的值。注意,转换过程可能涉及精度损失,因为不是所有的浮点数都能精确地表示为整数毫秒或微秒。
std::chrono::duration_cast
是类型安全的,它确保你只能将时间间隔转换为另一个有效的时间间隔类型。如果你尝试进行无效的转换,编译器将报错。