我正在编写一个使用日期类的程序。
用户输入日期(int
),月份(string
)和年份(int
)。然后,用户选择1
格式作为输出日期的4
。
但是,其中两种格式将月份(string
)显示为int。例如,格式1
将为Mar 19, 2013
。格式2
为3 - 19 - 2013
。
所以我的问题是如何将用户输入的月份(string
),将其转换为正确的int
,然后显示它?
答案 0 :(得分:0)
从你的评论中,我认为你需要这个:
int monthNo(const std::string &month)
{
if (month == "Jan" || month == "jan")
return 1;
if (month == "Feb" || month == "feb")
return 2;
if (month == "Mar" || month == "mar")
return 3;
// ...
return 0; // No match
}
答案 1 :(得分:0)
试试这个..
void displayType1(int day, string month, int year)
{
cout << month <<" "<< day;
if(day == 1) cout << "st, ";
if(day == 2) cout << "nd, ";
if(day == 3) cout << "rd, ";
if(day > 3) cout << "th, ";
cout << year << "\n";
}
void displayType2(int day, string month, int year)
{
map<string, int> m;
m["January"] = 1;
m["February"] = 2;
m["March"] = 3;
m["April"] = 4;
m["May"] = 5;
m["June"] = 6;
m["July"] = 7;
m["August"] = 8;
m["September"] = 9;
m["October"] = 10;
m["November"] = 11;
m["December"] = 12;
cout << m[month] << "-" << day << "-" << year << "\n";
}
.. and so on
void ConvertAndDisplayDate(string date, short type)
{
ostringstream os(date);
int day, year;
string month;
os >> day >> month >> year;
switch(type) {
case 1:
displayType1(day, month, year);
break;
case 2:
displayType2(day, month, year);
break;
case 3:
displayType3(day, month, year);
break;
case 4:
displayType4(day, month, year);
break;
}
}
答案 2 :(得分:0)
您还可以将用户输入(字符串)转换为小写/大写,然后在if
中使用它。即使用户输入“JaN”“jAn”或“JAN”
答案 3 :(得分:-1)
您可以使用atoi函数将字符串转换为int
例如: a =“25”; b = atoi(a);