我正在编写一个使用date类的程序。
用户输入日(int)、月(string)和年(int)。然后,用户为要输出的日期选择4格式中的1。
但是,其中两种格式将月份(string)显示为整型。例如,格式1将是Mar 19, 2013。格式2将为3 - 19 - 2013。
因此,我的问题是如何获取用户输入的月份(string),将其转换为正确的int,然后显示它?
发布于 2013-03-20 14:53:12
从你的评论中,我认为你需要这个:
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
}发布于 2013-03-20 14:55:26
试试这个方法..
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;
}
}发布于 2013-03-20 14:56:45
您还可以将用户输入(字符串)转换为小写/大写,然后在if中使用。这将使得即使用户输入"JaN“"jAn”或"JAN“也可以使用代码
https://stackoverflow.com/questions/15516849
复制相似问题