我有一个数组和一个获取字符的函数,该字符应代表数组中的特定索引。例如,“ a”代表索引0,“ b”代表索引1“ c”代表索引2 ...
我不想使用开关盒!
void func(char ch, object* arr)
{
int index = ch//do something
arr[index]
}
没有开关外壳,有没有办法做到这一点,这是一种优雅的方法,不需要很多代码。
您可以通过获取该字符的ASCII值来实现。
我建议使用ASCII码,请参见:https://www.ascii-code.com。例如,如果char c由用户提供,则它是可打印的char,因此与您相关的代码在(space,32)->(delete,127)之间。尽管如果使用此数组,数组大小限制为95个条目,但是您可以在该范围内接近对象数组中的任何有效单元格。arr [c-''] <=> arr [0]无需冗长的if / else / switch案例。
由于与从a
到z
的字母相对应的整数按升序排列,因此可以如下使用static_cast<int>