如何在C++中动态判断是否是白天还是晚上影响计费?
时间: 2024-10-27 13:11:54 浏览: 19
在C++中,要实现动态判断白天和晚上并影响计费,你可以创建一个外部类变量或者全局变量来存储当前的时间,然后在每次计费前检查时间。例如,可以使用`std::chrono`库来获取和比较时间。下面是一个简单的例子:
```cpp
#include <iostream>
#include <chrono>
#include <ctime>
// 定义一天的小时数
const int DAY_HOURS = 24;
class TimeOfDay {
public:
bool isNight() {
auto now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
struct tm* time_info = localtime(&now);
// 晚上的时间范围可以根据实际情况调整
if (time_info->tm_hour >= 18 && time_info->tm_hour < 6) { // 假设傍晚6点到凌晨6点为晚上
return true;
} else {
return false;
}
}
};
class Taxi {
public:
double calculateRate(double distance, TimeOfDay& time) {
if (time.isNight()) {
return calculateNightRate(distance);
} else {
return calculateDayRate(distance);
}
}
private:
double calculateDayRate(double distance) { ... }
double calculateNightRate(double distance) { ... }
};
int main() {
TimeOfDay tod;
Taxi taxi;
double distance = 15;
if (tod.isNight()) {
std::cout << "现在是晚上,费用: " << taxi.calculateNightRate(distance) << std::endl;
} else {
std::cout << "现在是白天,费用: " << taxi.calculateDayRate(distance) << std::endl;
}
return 0;
}
```
在这个例子中,我们首先通过`isNight()`函数获取当前时间并判断是否在晚上。然后在`calculateRate()`方法中,根据`TimeOfDay`类的判断结果选择相应的计费函数。
阅读全文