c++ 如何获得两个时间点之间的毫秒差

f0brbegy  于 9个月前  发布在  其他
关注(0)|答案(4)|浏览(123)

我如何获得(使用std::chrono库)两个时间点之间的毫秒差?
我可以用这个来做:

std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now();
    
std::chrono::time_point<std::chrono::system_clock> foo = now + std::chrono::milliseconds(100);
    
std::chrono::duration<float> difference = foo - now;
    
const int milliseconds = difference.count() * 1000;

字符串
我怎样才能得到以毫秒为单位的时间,这样我就可以把持续时间用unsigned int,而不是float,然后乘以1000?

dgjrabp2

dgjrabp21#

std::chrono::duration有两个模板参数,第二个是度量单位。您可以调用std::chrono::duration_cast将一个持续时间类型转换为另一个。此外,还有一个预定义的毫秒持续时间类型:std::chrono::milliseconds。将其组合在一起:

auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(foo - now);

字符串
要获取实际的毫秒数,请使用duration::count

auto ms = milliseconds.count();


它的返回类型是duration::rep,对于像std::chrono::milliseconds这样的标准持续时间类型,它是一个未指定大小的有符号整数。

ggazkfy8

ggazkfy82#

chrono::duration_cast<chrono::milliseconds>(end_time - start_time).count()

字符串

q5iwbnjs

q5iwbnjs3#

我在打印像e-09这样的字母时遇到了持续时间问题。下面是我如何解决的:

auto start = std::chrono::high_resolution_clock::now();
< run your function or code here >
auto finish = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, std::milli> elapsed = finish - start;
std::cout << "Elapsed Time: " << elapsed.count() << " seconds" << std::endl;

字符串
现在我得到了想要的结果:

Elapsed Time: 34.406 seconds

b4qexyjb

b4qexyjb4#

http://www.cplusplus.com/reference/chrono/duration_cast/

std::chrono::duration_cast<std::chrono::milliseconds>();

字符串

相关问题