Проверка ввода только одного символа

94
24 декабря 2021, 02:30

Написать программу, печатающую символы от A до введенного с клавиатуры символа (последний возможный: Z). Для каждого символа вывести номер, сам символ, шестнадцатеричный, восьмеричный и двоичный код этого символа. Предусмотреть обработку ошибок.

В чём нужна помощь: как проверить, если было введено что угодно, кроме единственного символа A..Z (например, Aa - это неверный ввод)? То есть как проверить, лежит ли что-либо в буфере... или, может, более хороший и универсальный подход есть?
Нужна реализация именно с использованием потоков, так как лабораторка основана на этом (вторая часть задания - обработка исключений с использованием if (!cin) и т. д., и т. п.).

Мне нужно не очищать поток через cin.clear() или cin.ignore(), а конкретно заранее проверять, введено ли то, что требуется, и ничего более.

Собственно, имеющийся на данный момент код:

#include <iostream>
#include <bitset>
#include <iomanip>
using namespace std;
int main()
{
    char cEnd, cStart;
    int cNo = 1;
    while (1)
    {
        cout << "Vvedite simvol ('A' dlya vihoda): ";
        cin >> cEnd;
        if ((cEnd >= 'A') && (cEnd <= 'Z'))
        {
            for (cStart = 'A'; cStart != cEnd + 1; cStart++, cNo++)
            {
                cout << setw(2) << cNo << ' ' << cStart << ' ';
                cout << ios::hex << cStart << ' ';
                cout << ios::oct << cStart << ' ';
                cout << bitset<8>(cStart) << "\n";
            }
            cin.clear();
            cin.ignore();
        }
        else
        {
            cout << "Neverniy vvod\n";
            system("pause");
            system("cls");
            continue;
        }
        cNo = 1;
        if (cEnd == 'A')
            break;
    }
    return 0;
}
Answer 1

Вероятно, вам нужна функция peek(), которая как раз и смотрит - есть ли что в буфере, и что именно?

READ ALSO
Grace Dependency Injection breaks project

Grace Dependency Injection breaks project

Я начал писать проект с нуля, поэтому я хотел реализовать DependencyInjectionВыбрал Grace, потому что он уже реализован на старом проекте, его писал не я, так...

178
Неравномерное изменение значения DOTween Unity3D

Неравномерное изменение значения DOTween Unity3D

Столкнулся с тем, что DOTween неравномерно изменяет значение

194
Ошибка при занесении данных в базу

Ошибка при занесении данных в базу

Пытаюсь реализовать форму регистрации для БДПосле запуска Winform выдает ошибку

82
Как проверить пользователя на админ права Телеграм C#?

Как проверить пользователя на админ права Телеграм C#?

Пишу админ бота для Телеграма и мне нужно проверить пользователя на админ права, и если он не просто участник а админ, то код должен работать,...

194