将用户输入字符串转换为int

时间:2013-03-20 06:36:37

标签: c++ string int type-conversion

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

用户输入日期(int),月份(string)和年份(int)。然后,用户选择1格式作为输出日期的4

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

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

4 个答案:

答案 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);

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