Если вас не интересует как работает поток ввода, как из отдельных символов собираются числа или слова, как компьютеру понять, окончен ввод или будет еще и т.д. и т.п...
{
setlocale(0, "");
int a;
cout << "введите число от 1 до 3" << endl;
do
{
a = 0; //начальное заведомо неправильное число
cin >> a; //ввод числа
cin.clear(); //на случай ошибки ввода
if (cin.rdbuf()->in_avail()) cin.ignore(cin.rdbuf()->in_avail()); //удалить все лишнее из потока
} while ((a<1||a>3) && cout << "Ошибка, введите еще раз.\n");
cout << "Вы ввели число " << a;
}
Всё работает, но если ввести более 1 цифры, то он будет писать "Введено некорректное число!" для каждой цифры. Как исправить?