An alternative to the switch statement for symbols would be to base if off ASCII ranges or have a string of symbols and utilize the "find_first_of" function.
bool isSymbol (char x)
{
string SYMBOLS = "X ~`!@#$%^&*()_+-={}[]:\";'<>?,./|";
bool result = false;
int location = 0;
location = SYMBOLS.find_first_of(x);
if (location > 0)
result = true;
return result;
}