Hi,
The switch C/C++ construct can only take an integer.
It cannot take an object (unless that object is convertible to an integer). Thus, it cannot take a std::string.
It cannot take a float, double, long double. Or a complex. Or a pointer.
It can take a char, short, int, long or bool, or any expression which evaluates to such.
Some languages, such as Ada, have a more capable switch construct, which can handle those other situations that C/C++ cannot.
For those more complicated situations in C/C++, use a if/else if/else construct, or use polymorphism (where applicable).
HTH, --Eljay