Bạn cần cân nhắc ý nghĩa của từ 'thời gian'. Có hai khái niệm, thời gian và thời lượng. Nó không làm cho bất kỳ ý nghĩa để thêm hoặc trừ điểm thời gian từ mỗi khác. Nó có ý nghĩa để cộng và trừ các khoảng thời gian (kết quả trong một khoảng thời gian), và nó có ý nghĩa để cộng và trừ một khoảng thời gian với một thời điểm (kết quả là một thời điểm.). [IMG] việc phân biệt giữa hai khái niệm, nhưng tiêu chuẩn C++ <chrono>
thư viện thực hiện khá tốt.
Dưới đây là một số mã mà lạm dụng loại C tm
để có được một cặp vợ chồng khoảng thời gian từ người dùng, thêm chúng với nhau, và sau đó lạm dụng tm
lại để xuất kết quả.
#include <iostream> // cout, cin
#include <iomanip> // get_time, put_time
#include <chrono> // hours, minutes, duration_cast
int main() {
// input, get a couple durations to do arithmetic on
// technically std::tm represents a time point and get_time is supposed to
// parse a time point, but we treat the results as a duration
std::tm t;
std::cin >> std::get_time(&t, "%H:%M");
auto duration1 = std::chrono::hours(t.tm_hour) + std::chrono::minutes(t.tm_min);
std::cin >> std::get_time(&t, "%H:%M");
auto duration2 = std::chrono::hours(t.tm_hour) + std::chrono::minutes(t.tm_min);
// do the arithmetic
auto sum = duration1 + duration2;
// output
auto hours = std::chrono::duration_cast<std::chrono::hours>(sum);
auto minutes = std::chrono::duration_cast<std::chrono::minutes>(sum - hours);
t.tm_hour = hours.count();
t.tm_min = minutes.count();
std::cout << std::put_time(&t, "%H:%M") << '\n';
}
Có vẻ như bạn đã có nó. Chúc may mắn!. – littleadv
Vấn đề duy nhất là tôi cần phải sử dụng các tập tin tiêu đề sau và thời gian lớp – Emptypeace
bạn không 'cần' lớp thời gian cho điều này .. đó sẽ là một sự lãng phí thời gian .. (không có ý định chơi chữ) .. những gì bạn yêu cầu là khá cơ bản và có thể dễ dàng đạt được với các phép toán số học bình thường. – iKlsR