不同数量项目的大小写切换替代方案

问题描述 投票:0回答:1

我想对不同数量的项目(向量)进行大小写切换,但此方法需要常量。我正在使用 SDL2 读取所有输入,并且我使用的方法需要大小写切换。我需要按下所有输入并将它们添加到某种字符串或向量中。

while (SDL_PollEvent(&e) != 0){
        switch (e.type){
            for (int i = 0; i < currentbinds.size(); i++){
                case currentbinds[i]:
                    keyspressed += currentbinds[i];
            }
            case SDL_QUIT:
                iskillready = true;
                break;
        }
    }
}

currentbinds 是一个向量,包含我可能使用的所有可能的按键绑定。 keypressed 是一个字符串,返回所有按下的按键绑定。 我正在使用大小写开关来遍历所有按键绑定,检查是否按下了该按键绑定,如果是,则将它们添加到按键字符串中。

有没有其他方法可以在没有常量的情况下做到这一点?

c++ sdl-2
1个回答
0
投票

您不能使用 switch-case 来实现此目的,因为它需要常量表达式。但是,您可以修改代码以使用 if 和 for 循环,例如:

while (SDL_PollEvent(&e) != 0) {
    if (e.type == SDL_QUIT) {
        iskillready = true;
        break;
    }

    for (int i = 0; i < currentbinds.size(); i++) {
        if (e.type == currentbinds[i]) {
            keyspressed += currentbinds[i];
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.