Это всегда один и тот же ответ на подобные вопросы проверки входных данных.Забудьте о том, какими должны быть данные, и просто подумайте, что вводит пользователь.Всегда пользователь просто набирает текст.Так что читайте пользовательский ввод в строку, и только если ввод соответствует тому, что вы ожидаете, преобразуйте его в нужные вам данные.
Так что в вашем случае считайте данные в виде строки
cout << "Ihre Auswahl: ";
string input;
cin >> input;
Проверьте, является ли ввод тем, что вы хотите
if (input != "1" && input != "2" && input != "3" && input != "4")
{
cout << endl << "Ihre Angabe ist nicht richtig. Bitte geben Sie eine der gegebenen Ziffern ein." << endl << endl;
system("PAUSE");
}
Только если ввод того, что вам нужно, преобразуйте его в символ
else
{
char zeichen = input[0];
switch (zeichen)
{
case '1':
...
case '2':
...
case '3':
...
case '4':
...
}
}
Что-то в этом роде в любом случае.Надеюсь, вы поняли, что вы не можете проверить правильность ввода, предполагая, что пользователь собирается ввести что-то правильное.Пользователь может ввести что угодно.