0

我正在编写一个使用日期类的程序。

用户输入日(int)、月(string)和年(int)。然后用户选择要输出的日期格式14

但是,其中两种格式将月份(string)显示为 int。例如格式1将是Mar 19, 2013. 格式23 - 19 - 2013.

所以我的问题是如何获取用户输入的月份(string),将其转换为正确的int,然后显示?

4

4 回答 4

0

您还可以将用户输入(字符串)转换为小写/大写,然后在if . 即使用户输入“JaN”“jAn”或“JAN”,也可以使用代码

于 2013-03-20T06:56:45.280 回答
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
}
于 2013-03-20T06:53:12.170 回答
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;
   }
}
于 2013-03-20T06:55:26.287 回答
-1

您可以使用 atoi 函数将字符串转换为 int

例如:a = "25"; b = atoi(a);

http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/

于 2013-03-20T06:44:12.400 回答