我在寫一個使用日期類的程序。將用戶輸入字符串轉換爲int
用戶輸入當天(int
),月份(string
)和年份(int
)。然後,用戶選擇的4
格式的日期1
在被輸出。
但是,有兩個這些格式作爲int顯示月份(string
)。例如格式1
將是Mar 19, 2013
。格式2
將是3 - 19 - 2013
。
所以我的問題是如何把用戶輸入的月份(string
),將其轉換爲正確的int
,然後顯示它?
我在寫一個使用日期類的程序。將用戶輸入字符串轉換爲int
用戶輸入當天(int
),月份(string
)和年份(int
)。然後,用戶選擇的4
格式的日期1
在被輸出。
但是,有兩個這些格式作爲int顯示月份(string
)。例如格式1
將是Mar 19, 2013
。格式2
將是3 - 19 - 2013
。
所以我的問題是如何把用戶輸入的月份(string
),將其轉換爲正確的int
,然後顯示它?
可以使用的atoi函數字符串轉換成INT
例如: 一個= 「25」; b = atoi(a);
從您的意見,我認爲你需要這樣的:
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
}
嘗試這種方式..
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;
}
}
您還可以將用戶輸入(字符串)小寫/大寫,然後在if
中使用。即使用戶輸入了「JaN」「jAn」或「JAN」,也可以使用該代碼。
您的意思是要將「Jan」 - > 1',「Feb」 - > 2' ,...? – deepmax 2013-03-20 06:42:16
@ MM.I已嘗試讓用戶輸入本月。例如Mar.然後將該字符串傳遞給一個函數。在這個函數中我試圖寫下如果語句: – Dolbyover 2013-03-20 06:47:58
if(month == Jan || month == 1) – Dolbyover 2013-03-20 06:48:37