【问题标题】:Converting user input string into int将用户输入字符串转换为 int
【发布时间】:2013-03-09 03:38:58
【问题描述】:

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

用户输入日期(int)、月份(string)和年份(int)。然后用户从4 格式中选择1 来输出日期。

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

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

【问题讨论】:

  • 您的意思是要转换"Jan" -> 1, "Feb" - > 2, ... 吗?
  • @MM.I 尝试让用户输入月份。例如 Mar。然后将该字符串传递给函数。在该函数中,我尝试编写以下 if 语句:
  • 如果(月==一月||月==一月)
  • if (month == Feb || month == feb) { month = 2;返回月份; }
  • @MM。谢谢你。新手错误

标签: c++ string int type-conversion


【解决方案1】:

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

示例: 一个=“25”; b = atoi(a);

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

【讨论】:

    【解决方案2】:

    从你的 cmets 来看,我认为你需要这个:

    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
    }
    

    【讨论】:

      【解决方案3】:

      试试这个方法。。

      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;
         }
      }
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多