Как заставить систему печатать 0x перед шестнадцатеричным числом и 0 перед восьмеричным числом? - PullRequest
5 голосов
/ 23 сентября 2019

Мой учитель говорит, что для задания нам не разрешается вручную печатать 0x перед шестнадцатеричным числом, мы должны заставить систему делать это.

В настоящее время мой код выглядит следующим образом:

cout << "Hex" << setw(12) << hex << static_cast<int>(letter) << setw(12) << hex
        << number << setw(12) << hex << static_cast<int> (symbol) << endl;

Он печатает правильное шестнадцатеричное значение, но без 0x.

Кроме того, для восьмеричных чисел, я должен снова,заставить систему печатать 0 перед числом (не вручную. Мой код печатает правильные значения, но без предшествующего 0:

cout << "Octal" << setw(12) << setbase(8) << static_cast<int>(letter) << setw(12) << setbase(8)
    << number << setw(12) << setbase(8) << static_cast<int>(symbol) << endl;

1 Ответ

7 голосов
/ 23 сентября 2019

Использование std::showbase:

std::cout << std::hex << std::showbase << 1234567890;
...