【发布时间】:2021-12-08 07:41:18
【问题描述】:
所以我的问题是这样的,我必须输入一个从 1 到 7 的数字,并且对于每个相应的数字,我必须打印一个英文单词的字母(e 代表 1,n 代表 2,等等) 这是我的想法:
#include <iostream>
using namespace std;
int main()
{
enum eng {e='e', n='n',g,l,i,s,h}
};
int x;
cout << "dati x\n";
cin >> x;
if (x >= 0 && x <= 7)
eng val = static_cast<eng>(x);
cout << x;
}
我希望将数字 ( x ) 从 eng 类型转换为其相应的字母,但转换会返回数字(如果我输入 1,它给我 1,如果我输入 2,它给我 2) 我尝试在 eng 中为 e 和 n 分配一个 char 值,看看会发生什么,但结果相同,我知道我可以使用 switch,但我想尝试让它工作
【问题讨论】:
-
看来你想要一个 map 来将数字映射到字符而不是枚举。
-
我还建议您使用编辑器重新格式化工具,因为您显示的代码没有按照缩进的建议进行。
-
为什么不只是
const char* eng = "english";...cout << eng[x];? -
测试
x >=0 && x <=7有一个错误。如果您的范围是 1-7,则使用x >= 1 && x <= 7。如果您的范围是 0-6,那么您使用x >= 0 && x < 7。 Alan 的上述示例假设您使用的是 0-6。但是,它对 0-7 有效,因为字符串包含 NUL 终止符.. -
仔细查看您正在打印的内容。