我正在编写一个使用日期类的程序。
用户输入日(int
)、月(string
)和年(int
)。然后用户选择要输出的日期格式1
。4
但是,其中两种格式将月份(string
)显示为 int。例如格式1
将是Mar 19, 2013
. 格式2
为3 - 19 - 2013
.
所以我的问题是如何获取用户输入的月份(string
),将其转换为正确的int
,然后显示?
我正在编写一个使用日期类的程序。
用户输入日(int
)、月(string
)和年(int
)。然后用户选择要输出的日期格式1
。4
但是,其中两种格式将月份(string
)显示为 int。例如格式1
将是Mar 19, 2013
. 格式2
为3 - 19 - 2013
.
所以我的问题是如何获取用户输入的月份(string
),将其转换为正确的int
,然后显示?
您还可以将用户输入(字符串)转换为小写/大写,然后在if
. 即使用户输入“JaN”“jAn”或“JAN”,也可以使用代码
根据您的评论,我认为您需要这个:
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
}
试试这个方法。。
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;
}
}
您可以使用 atoi 函数将字符串转换为 int
例如:a = "25"; b = atoi(a);