首先忍受我,我是一个菜鸟。
我正在尝试编写一个输出一周中几天的程序。例如,如果一个人输入day1,则输出星期日,星期一,星期一,依此类推。我使用了一个switch语句,其中一个int映射到一个用于switch case的枚举。我似乎遇到的问题是它似乎没有用,至少在我输入day1时没有。当我使用int值1到7时,它按预期工作。我试图找到解决方案,到目前为止,只有墙壁才能帮助。
这是我的代码:
enum days{day1,day2,day3,day4,day5,day6,day7};
int day;
cout<<"Enter the day of the week in format day1 through day7 ";
cin>>day;
switch(day)
{
case day1:
cout<<"Sunday";
break;
case day2 :
cout<<"Monday";
break;`
}
答案 0 :(得分:0)
如果您想接受day1
,day2
等输入,那么为什么将输入变量声明为int
,它应该是char
数组..
如果您想接受1
,2
之类的输入,那么它有点好......
如果要输入字符串然后将其与枚举值进行比较,则首先必须将其转换为整数值。
你可以这样做,
char day[4];
cin>>day;
int d=day[3]-49;
然后像你一样在开关中使用它。
switch(d)
{
case days::day1:
cout<<"Sunday";
break;
case days::day2 :
cout<<"Monday";
break;
答案 1 :(得分:0)
如果您希望用户输入day1并将其映射到枚举,则需要自己解析输入中的整数值。您可以将其作为字符串读取,然后自己解析或使用scanf的稍微非C ++解决方案:
int dayNum = 0;
char buff[16];
scanf("%[^0-9]%d", buff, &dayNum);
还要记住,枚举从值0开始,如果你希望它们从1开始,那么你必须将枚举更改为:
enum days{day1=1,day2,day3,day4,day5,day6,day7};
^^
day2,day3等将具有值2,3,...