2015-07-27 22 views
7

Làm thế nào tôi có thể nhận được (bằng cách sử dụng thư viện std :: chrono) sự khác biệt giữa hai điểm trong thời gian tính bằng mili giây?Chrono - Sự khác biệt giữa hai điểm theo thời gian tính bằng mili giây?

tôi có thể làm điều đó bằng này:

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; 

Làm thế nào tôi có thể nhận được thời gian này trong mili giây, vì vậy tôi có thể sử dụng thời gian như một int unsigned, và không phải là một phao và sau đó nhân với 1000?

+3

Mất năm giây để google này: 'chrono :: duration_cast (end_time - start_time) .count()' – zoska

Trả lời

13

std::chrono::duration có hai tham số mẫu, thứ hai là chính xác đơn vị đo lường. Bạn có thể gọi std::chrono::duration_cast để truyền từ loại thời lượng này sang loại thời lượng khác. Ngoài ra, có một loại thời lượng được xác định trước trong mili giây: std::chrono::milliseconds. Soạn này với nhau:

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

Để gen con số thực tế của mili giây, sử dụng duration::count:

auto ms = milliseconds.count(); 

kiểu trả về của nó là duration::rep, mà với nhiều loại thời gian tiêu chuẩn như std::chrono::milliseconds là một số nguyên có chữ ký của kích thước không xác định.

2
chrono::duration_cast<chrono::milliseconds>(end_time - start_time).count() 
Các vấn đề liên quan