while(true)switch case - 是否可以实现可变大小写匹配,例如:使用for循环?

时间:2012-10-14 00:18:44

标签: c++ switch-statement

我只是想知道是否有可能使用键盘变量?所以案例可以是从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

2 个答案:

答案 0 :(得分:1)

C ++规则说case表达式必须是常量,因此编译器可以在编译时为它创建代码,如果你一次检查一个字符,为什么你不使用if

答案 1 :(得分:0)

另外,据我所知,在c ++中你不能将switch语句case标签作为字符串。我前一段时间试过这项工作,遇到了很多麻烦。