将整个功能写成一个bool函数
时间: 2024-02-23 22:02:46 浏览: 82
可以将整个功能写成一个bool函数,函数的返回值表示今天是否是用户的生日。代码如下:
```c++
#include <chrono>
#include <locale>
#include <sstream>
#include <iomanip>
// 将字符串转换为time_point对象
std::chrono::system_clock::time_point str2timepoint(const std::wstring& str) {
std::wistringstream iss(str);
iss.imbue(std::locale("")); // 设置本地化信息
std::tm tm = {};
iss >> std::get_time(&tm, L"%Y%m%d"); // 解析时间字符串
return std::chrono::system_clock::from_time_t(std::mktime(&tm));
}
// 判断今天是否是用户的生日
bool isBirthday(const std::wstring& str) {
auto birthday = str2timepoint(str); // 用户生日的time_point对象
// 获取今天的日期并转换为time_point对象
auto now = std::chrono::system_clock::now();
auto today = std::chrono::system_clock::time_point(std::chrono::duration_cast<std::chrono::hours>(
now.time_since_epoch()
).count() / 24 * 24);
return today == birthday;
}
int main() {
// 示例:判断L"20040417"是否是今天
bool result = isBirthday(L"20040417");
if (result) {
std::wcout << L"今天是您的生日!" << std::endl;
} else {
std::wcout << L"今天不是您的生日。" << std::endl;
}
return 0;
}
```
在上面的示例代码中,函数isBirthday判断了用户的生日和今天的日期是否相等,如果相等,则返回true,否则返回false。在main函数中,我们调用isBirthday函数,并根据返回值输出相应的信息。
阅读全文