If cin expects an int but gets a letter you would have to clear the buffer and clear the error flag. It would be easier to read the complete line with getline() and then check the string.
Note: <string> should be included as includes and not <string.h>.
long select;
char *endptr = nullptr;
std::string userinput;
do {
std::getline(std::cin, userinput);
select = std::strtol(userinput.c_str(), &endptr, 10);
if (endptr == userinput)
puts("Not a valid number! Try again");
} while (endptr == userinput);
switch (select) {
case 1: default:
cout << "\nInvalid Input. Try Again....\n";
}