C++输入包括两行,两行均为一个“时:分:秒”格式的时间。且本题保证第一个时间一定大于第二个时间
时间: 2024-10-21 17:05:35 浏览: 10
C++两个一维数组相加求和
在C++中,如果你需要从用户处输入两个以“时:分:秒”格式表示的时间,并确保第一个时间总是大于第二个时间,你可以使用`std::cin`来读取用户的输入,然后转换成时间戳进行比较。下面是一个简单的示例:
```cpp
#include <iostream>
#include <sstream> // 用于字符串解析
#include <chrono> // 使用chrono库处理时间
struct TimePoint {
int hours, minutes, seconds;
};
bool compareTime(const TimePoint& t1, const TimePoint& t2) {
return (t1.hours * 60 * 60 + t1.minutes * 60 + t1.seconds >
t2.hours * 60 * 60 + t2.minutes * 60 + t2.seconds);
}
int main() {
TimePoint time1, time2;
std::cout << "请输入第一个时间(小时:分钟:秒,如 12:34:56):" << std::endl;
std::string input1;
std::getline(std::cin, input1); // 一次读入一行,防止换行符干扰
std::istringstream iss1(input1);
iss1 >> time1.hours >> time1.minutes >> time1.seconds; // 解析输入
std::cout << "请输入第二个时间(小时:分钟:秒,如 09:45:30):" << std::endl;
std::getline(std::cin, input2);
std::istringstream iss2(input2);
iss2 >> time2.hours >> time2.minutes >> time2.seconds;
if (!compareTime(time1, time2)) {
std::cout << "第一个时间应大于第二个时间,请重新输入。" << std::endl;
// 如果条件不满足,可以再次循环接收输入直到满足条件
// 这里省略了这部分,实际应用中可以根据需求添加
} else {
std::cout << "第一个时间大于第二个时间,差值为:" << diffInSeconds(time1, time2) << "秒。" << std::endl;
}
return 0;
}
// 自定义函数将TimePoint时间差转换为秒
int diffInSeconds(const TimePoint& t1, const TimePoint& t2) {
return (t1.hours - t2.hours) * 3600 + (t1.minutes - t2.minutes) * 60 + (t1.seconds - t2.seconds);
}
```
请注意,上述代码假设用户会按照规范输入,如果用户输入不符合预期格式,你需要添加额外的错误检查和处理。
阅读全文