我需要制作一个根据用户输入显示一个月的程序。例如,如果用户输入8
,则会显示August
。我不能使用if
语句或任何检查条件的东西。我还必须使用函数.substr()
。我必须使用包含所有月份的字符串。
例如,string months = "January...December";
答案 0 :(得分:-2)
编辑:替换if
块的“用户输入检查”try-catch
以符合OP限制:“我不能使用if语句< / EM>“
您可以格式化“月”string
以满足您的需求。最长的月份名称是9月(9个字母),因此填写“月份”,每月最多包含9个字母的空格:
std::string months="January February March April May June July August SeptemberOctober November December ";
然后你可以使用用户输入作为substr
的索引,假设用户输入在1到12之间。即:
input--; // Indexes start at 0
input *= 9; // Scale it to word length
// Use substr as requested. Remember 9 is the max length of the month name
std::string selectedMonth = months.substr(input, 9);
如果需要,您可以按照here
所述修剪尾随空格请考虑这是一个易于理解的教学示例,有足够的改进空间。完整代码:
#include <iostream>
using namespace std;
int main()
{
int input = 0;
cin >> input;
string months="January February March April May June July August SeptemberOctober November December ";
input--; // Indexes start at 0
input *= 9; // Scale it to word length
string selectedMonth;
try
{
// Use substr as requested. Remember 9 is the max length of the month name
selectedMonth = months.substr(input, 9);
}
catch (out_of_range &ex)
{
cout << "error: input must be in the range [1, 12]";
}
// Trim it before outputting if you must
cout << selectedMonth;
return 0;
}