2015-07-27 5 views
7

Wie kann ich (unter Verwendung der std :: chrono-Bibliothek) den Unterschied zwischen zwei Zeitpunkten in Millisekunden ermitteln?Chrono - Der Unterschied zwischen zwei Zeitpunkten in Millisekunden?

ich tun könnte, dass dies mit:

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; 

Wie kann ich diese Zeit in Millisekunden bekommen, so kann ich die Dauer als unsigned int verwenden und nicht einen Schwimmer und dann mit 1000 multiplizieren?

+3

Ich brauchte fünf Sekunden, um dies zu googeln: 'chrono :: duration_cast (end_time - start_time) .count()' – zoska

Antwort

13

std::chrono::duration hat zwei Template-Parameter, die zweite ist, genau die Maßeinheit. Sie können std::chrono::duration_cast aufrufen, um von einem Duration-Typ auf einen anderen zu wechseln. Außerdem gibt es einen vordefinierten Typ der Dauer für Millisekunden: std::chrono::milliseconds. Komponieren diese zusammen:

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

Um gen die tatsächliche Anzahl von Millisekunden, verwenden duration::count:

auto ms = milliseconds.count(); 

Der Rückgabetyp ist duration::rep, die für die Standarddauer Typen wie std::chrono::milliseconds ist eine signierte ganze Zahl von nicht näherer Größe.

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