2 <chrono> system_clocks miteinander vergleichen
-
Hallo,
Ich suche eine Möglichkeit 2 sytem_clocks aus dem Header "chrono" miteinander zu vergleichen.
Bisher habe ich dafür den Operator "==" verwendet.
Ich bekomme jedoch folgende Fehlermeldung:Fehler C2678 Binärer Operator "==": Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ "std::chrono::system_clock" akzeptiert (oder keine geeignete Konvertierung möglich)
Gibt es überhaupt einen Weg diese zu vergleichen?
Liebe Grüße
Tim

-
Was meinst du mit „2 system_clocks“? Alle Funktionen aus
std::system_clocksind static, es macht also keinen Sinn davon Objekte anzulegen.
-
Hi,
Danke für Deine schnelle Antowrt.
Du hast Recht, da habe ich wohl etwas falsch verstanden.Hast Du eine Ahnung wie ich am Besten Zeiten speichern und vergleichen kann?
-
Timmus schrieb:
Hast Du eine Ahnung wie ich am Besten Zeiten speichern und vergleichen kann?
Indem du wirklich auch Zeiten und nicht die Uhren vergleichst. Die Zeit kriegst du mit
std::chrono::system_clock::now();. Die kannst du dann mitoperator==oder was auch immer vergleichen.
-
Hallo,
auch Dir danke ich für Deine Antwort.
Die Uhrzeit und das Datum werden eingegeben.
Meine Funktion soll dann in einer deque nach einem Element suchen, dass als Datum und Uhrzeit die eingegeben Daten enthält. Wie stelle ich dann den Vergleich an?
Die now() Funktion bringt mir dort ja nichts oder?Liebe Grüße
Tim

-
chrono definiert zwei verschiedene Typen von Zeit: a)
duration, also eine Zeitspanne und b)time_point, also einen Zeitpunkt. Beide Typen besitzen einenoperator==mit denen man sie vergleichen kann.
Eine Zeitspanne ist so etwas wie 10 Sekunden oder 2 Minuten. Ein Zeitpunkt ist z.B. „jetzt“ oder „epoch“.Ich nehme an du möchtest einen Zeitpunkt speichern? Einen Zeitpunkt zu speichern klingt für mich erstmal falsch. Was hast du damit vor?
Um wirklich einen Zeitpunkt zu speichern, musst du ihn erstmal in einen primitiven Typen konvertieren, sieh dir dazu mal http://en.cppreference.com/w/cpp/chrono/time_point/time_point_cast an. Für Zeitspannen gibt es entsprechend einen
duration_cast.
-
Schau dir einfach mal das Beispiel zu system_clock:now an.
Den dort beschriebenen Datentyp 'system_clock::time_point' oder aber den nach 'time_t' umgewandelten Wert kannst du dann zum Vergleich heranziehen.
-
Timmus schrieb:
Die Uhrzeit und das Datum werden eingegeben.
Ah ha. Dazu schau dir mal http://en.cppreference.com/w/cpp/chrono/c/tm an. Diese Struktur kannst du mit http://en.cppreference.com/w/cpp/chrono/c/mktime in ein
time_tkonvertieren. Damit kannst du dann deine Vergleiche anstellen, enweder auf die C Art mit http://en.cppreference.com/w/cpp/chrono/c/difftime oder auf die C++ Art mit http://en.cppreference.com/w/cpp/chrono/system_clock/from_time_t.
-
Hallo,
mir hat es am Verständniss gemangelt, dass time_t einen Zeitpunkt festlegt.
Eure Antworten haben mir sehr geholfen und die Abfrage und der Vergleich funktionieren.Vielen Vielen Dank!
