2016-12-09 9 views
-1

Wie kann ich das in C++ machen?Zeit im Format hinzufügen hh: mm in C++

Beispiel:

time1 = 04:45; 
time2 = 02:25; 
result = time1 + time2; 
result = 07:10 

In welchem ​​Datum Typ (string, double, usw.) sollten Werte gespeichert werden, um Zeit?

bearbeiten: Ist es möglich, von diesem Code erhalten int h = 23 und int m = 14? Mit anderen Worten, wie man% H und% M druckt?

+3

Wir sind nicht hier, um Code für Sie zu schreiben. Was hast du probiert? Zeigen Sie Ihre Arbeit! Dann fragen Sie * spezifische * Fragen. –

+1

Schauen Sie hier für das Parsing: http://en.cppreference.com/w/cpp/io/manip/get_time – Snps

+0

Haben Sie ein paar Minuten darüber nachgedacht, wie Sie solche Male "von Hand" hinzufügen würden (genauer gesagt, ohne Sie selbst) Computer), mit Bleistift und Papier? –

Antwort

2

Schauen Sie in die <chrono> Standard C++ 11-Header. Siehe auch this question.

Sie würden die "04:25" string (viel mehr über std::string, lesen, die ein ziemlich reich API hat) konvertieren zu einem gewissen Zeit (eigentlich ein time_point oder ein clock oder ein duration) und die Arbeit an dieser Zeit. auch localtime(3) & timelocal(3)

auf POSIX-Systemen (insbesondere Linux) Sie statt (sogar mit einem alten C++ oder in Klar C) verwenden könnte die zeitbezogenen Funktionen (lesen time(7) ...) wie strftime(3) und strptime(3) (siehe .. .)

Alternativ können Sie einfach Minuten, mit der Einsicht berechnen, dass "04:45"parsed als 04 (in dezimal, ist, oder sogar die strtol Funktion von C oder dessen sscanf) * 60 + 45 und "07:10" zu konvertieren std::stoi verwenden sollte 7*60 +10 dass ist 430; zu machen, die Rücktransformation betrachten 430/60 (was 7) und 430%60 geben 10.

Vergessen Sie nicht, alle Warnungen & Debug-Informationen zu ermöglichen, bei der Kompilierung (zB mit g++ -Wall -Wextra -g kompilieren, wenn mit GCC ...) und den Debugger verwenden (z. B. gdb), um das Verhalten Ihres Programms zu verstehen (z. B. indem Sie es Schritt für Schritt ausführen und seinen Status abfragen).

Ihre Frage ist extrem einfach (und zeigt einige Schwierigkeiten mit elementarer Programmierung und Mathe, unabhängig von C++). Ich empfehle dringend Tage zu verbringen einige grundlegende Mathematik Lehrbuch lesen (High-School-Ebene, Erklärung quotient und modulus und bases & radixes), dann (eine ausgezeichnete Einführung in die Programmierung, nicht mit C++), dann Programming using C++. Vergessen Sie nicht, etwas reference documentation über C++ zu lesen.

0

(Posted Lösung im Namen von OP).

Meine Arbeit - es funktioniert! (Inspiriert von SNPs des Link und Hilfe Freund) Link

int convert_time_to_minutes(string sss) 
{ 

    istringstream ss(sss); 
    string hh,mm; 
    getline(ss, hh,':'); 
    getline(ss, mm,';'); 


    double h,m; //hours, minutes 
    h = atoi(hh.c_str()); 
    m = atoi(mm.c_str()); 
    double minutes = (h *60 + m)/60; 
    cout << minutes; 
    return minutes; 

} 

Mit dieser Funktion zweimal für zwei Mal, als zwei Rückgabewerte zu addieren und ich habe Ergebnis in wenigen Minuten.

Verwandte Themen