我只是想知道是否有可能使用键盘变量?所以案例可以是从a到z的任何选择及其完全变量,例如:只有选择a),b)和c)出现在另一个条件bur中另一个a),b),c),d)和e)可能出现。假设它们都调用相同的函数但输入不同的参数。
char choice;
int i;
while(true)
{
// This increments from char 'a' onward to 'b', 'c', 'd', etc.
for (i = 0; i < number; i++){
char character = 'a';
cout << static_cast<char>(character + i) << ") list of choices" << endl;
}
cin >> choice;
switch(choice) {
// Same incremental principal to achieve variable cases
for (i = 0; i < number; i++){
char character = 'a';
character = (static_cast<char>(character + i) );
case character: carryOutJob(argumentDependantOnCharacter);
}
}
}
如果我运行类似于此的代码,我会得到类似这样的错误:
: error: ‘character’ cannot appear in a constant-expression
: error: jump to case label [-fpermissive]
: error: crosses initialization of ‘char character’
: error: expected ‘;’ before ‘}’ token
Error 1
答案 0 :(得分:1)
C ++规则说case
表达式必须是常量,因此编译器可以在编译时为它创建代码,如果你一次检查一个字符,为什么你不使用if
?
答案 1 :(得分:0)
另外,据我所知,在c ++中你不能将switch语句case标签作为字符串。我前一段时间试过这项工作,遇到了很多麻烦。