2013-03-20 97 views
0

我在寫一個使用日期類的程序。將用戶輸入字符串轉換爲int

用戶輸入當天(int),月份(string)和年份(int)。然後,用戶選擇的4格式的日期1在被輸出。

但是,有兩個這些格式作爲int顯示月份(string)。例如格式1將是Mar 19, 2013。格式2將是3 - 19 - 2013

所以我的問題是如何把用戶輸入的月份(string),將其轉換爲正確的int,然後顯示它?

+0

您的意思是要將「Jan」 - > 1',「Feb」 - > 2' ,...? – deepmax 2013-03-20 06:42:16

+0

@ MM.I已嘗試讓用戶輸入本月。例如Mar.然後將該字符串傳遞給一個函數。在這個函數中我試圖寫下如果語句: – Dolbyover 2013-03-20 06:47:58

+0

if(month == Jan || month == 1) – Dolbyover 2013-03-20 06:48:37

回答

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

您還可以將用戶輸入(字符串)小寫/大寫,然後在if中使用。即使用戶輸入了「JaN」「jAn」或「JAN」,也可以使用該代碼。