#include <iostream>
#include <vector>
using namespace std;
unsigned getmonth(const string & smonth);
class cdate
{
public :
friend void print_cdate(cdate & cd)
{
cout<<cd.year<<"年"<<cd.month<<"月"<<cd.day<<"日"<<endl;
}
cdate()=default;
cdate (string & sday);
private:
unsigned year;
unsigned month;
unsigned day;
};
cdate::cdate (string & sday)
{
year=stoi(sday.substr(sday.size()-4,4));
string::size_type pos=0;
pos=sday.find_first_of(" /");
month=getmonth(sday.substr(0,pos));
pos++;
day=stoi(sday.substr(pos,sday.find_first_not_of("0123456789",pos)-pos));
}
unsigned getmonth(const string & smonth)
{
vector<string> vmonth = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
vector<string> vnmonth={"1","2","3","4","5","6","7","8","9","10","11","12"};
//vector<string> vsmonth={"Jan","Fer","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};
for (decltype(vmonth.size()) i = 0; i != 12; ++i)
{
if (vmonth[i].compare(0, 3, smonth) == 0 || vmonth[i].compare(smonth) == 0||vnmonth[i].compare(smonth)==0)
{
return i + 1;
}
}
return 0;
}
int main()
{
string str1 = "1/2/1990", str2 = "Apr 3 1989", str3 = "October 4, 1980";
cdate mydate(str1);
print_cdate(mydate);
cdate mydate2(str2);
print_cdate(mydate2);
cdate mydate3(str3);
print_cdate(mydate3);
return 0;
}