用c plus plus 14写一个函数,输入一个代表日期的字符串例如“2023-4-3”,判断当前日期是否在输入的日期之后,是返回true。反之返回false
时间: 2023-06-04 08:04:33 浏览: 164
《C Primer Plus》第六版 第十一章编程练习答案
好的,这是一个代码实现的问题,我可以帮您解答。
以下是示例代码:
```c++
#include <iostream>
#include <chrono>
#include <ctime>
#include <cstring>
bool isAfterDate(const std::string& inputDate) {
std::tm tm = {};
std::istringstream iss(inputDate);
iss >> std::get_time(&tm, "%Y-%m-%d");
std::time_t inputTime = mktime(&tm);
std::time_t currentTime = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
return difftime(currentTime, inputTime) < 0;
}
int main() {
bool result = isAfterDate("2023-4-3");
std::cout << std::boolalpha << result << std::endl;
return 0;
}
```
这段代码使用了 C++ 14 的时间库,可以解析输入的日期字符串并转化为时间类型进行比较。具体实现逻辑如下:
1. 通过 `std::tm` 结构体来存储输入的日期,用 `std::get_time` 函数从字符串中解析出年月日。
2. 将解析到的 `std::tm` 结构体转化为时间戳 `inputTime`。
3. 获取当前时间的时间戳 `currentTime`,通过 `difftime` 函数比较两个时间戳的差值,若差值为负,则表示当前时间在输入日期之前,返回 `false`;否则返回 `true`,表示当前时间在输入日期之后。
希望这个示例代码对您有所帮助!
阅读全文