Пару вопросов к задаче на оператор switch()

Нужно написать программу перевода введенного символа шестнадцатеричной системы счисления в восьмеричную систему. Получилось следующее:

#include <iostream>
using namespace std;

    int main()
    {
        char x;
        cout << "x = ";
        cin >> x;
        switch (x)
        {
        case 0:cout <<"0"; break;
        case 1:cout <<"1"; break;
        case 2:cout <<"2"; break;
        case 3:cout << "3"; break;
        case 4:cout << "4"; break;
        case 5:cout << "5"; break;
        case 6:cout << "6"; break;
        case 7:cout << "7"; break;
        case 8:cout << "10"; break;
        case 9:cout << "11"; break;
        case 'A':cout << "12"; break;
        case 'B':cout << "13"; break;
        case 'C':cout << "14"; break;
        case 'D':cout << "15"; break;
        case 'E':cout << "16"; break;
        case 'F':cout << "17"; break;
        default: cout << "Error\n";
        };
    }

Отсюда два вопроса:

  1. Как сделать ввод сразу нескольких чисел/букв т.к программа работает только при одном введенном символе
  2. Как сделать так, что бы в консоль вводились, например, только заглавные буквы (A-F), что бы не писать кейс и для заглавных и для маленьких букв, или как это можно реализовать по другому.

Ответы (1 шт):

Автор решения: Andrej Levkovitch

Собственно вся програмка будет составлять пару строк с использованием возможностей стандартной библиотеки с++:

#include <iostream>
#include <iomanip>
int main() {
  int num;
  std::cin >> std::hex >> num;
  std::cout << std::oct << num;
  return 0;
}

Пример ввода-вывода

>> 10
<< 20
→ Ссылка