I was wondering what the performance hit of switching on strings was. This is interesting to know:
http://dotnetperls.com/string-switch
In C++ and C they only allow switching on integral values. I imagine in certain cases the compiler could make a jump statement which used the integer directly (maybe as part of the jump address, positioned relatively from the current one). That’s probably why it’s not allowed for character arrays or objects in general in C++. At least that’s my guess.
Another interesting link: http://blogs.msdn.com/cbrumme/archive/2003/04/22/51371.aspx
An interesting if unrelated link: http://blogs.ipona.com/james/archive/2008/05/23/Dangerous-Ideas-in-C-No.-1-A-Better-Switch.aspx