用户生日存放在wstrng中,将生日的年份去掉,读取今天的日期,判断今天是否是用户生日 C++,不使用localtime()
时间: 2024-02-23 20:01:55 浏览: 138
可以使用C++11的chrono库和locale库来解决这个问题。
首先,需要用到chrono库中的system_clock和time_point函数,来获取当前系统时间和转换为时间点。
然后,将用户生日存放在一个wstring类型的变量中,使用wstring库中的substr函数来分离出月日。
最后,将分离出来的月日和当前系统时间的月日进行比较,如果相同,则说明今天是用户生日。
下面是一个简单的示例代码:
```c++
#include <iostream>
#include <chrono>
#include <string>
#include <locale>
using namespace std;
int main()
{
//获取当前系统时间
auto now = chrono::system_clock::now();
time_t now_t = chrono::system_clock::to_time_t(now);
tm* local_time = localtime(&now_t);
wstring user_birthday = L"1990-09-01";
wstring birthday_month_day = user_birthday.substr(5, 5);
//将当前系统时间转换成wstring
wstring_convert<codecvt_utf8<wchar_t>> conv;
wstring now_month_day = conv.from_bytes(asctime(local_time)).substr(4, 5);
if (now_month_day == birthday_month_day)
{
cout << "Happy birthday!" << endl;
}
else
{
cout << "Today is not your birthday." << endl;
}
return 0;
}
```
需要注意的是,需要在代码开头添加`#include <locale>`和`#include <codecvt>`来使用wstring_convert库。
阅读全文