Как я могу передать шестнадцатеричные числа с A-F (а не a-f)?

Можно ли сделать ostream вывод шестнадцатеричных чисел с символами A-F, а не A-F?

int x = 0xABC;
std::cout << std::hex << x << std::endl;

Это выводит abc, тогда как я предпочитаю видеть abc.

Ответ 1

Да, вы можете использовать std::uppercase, который влияет на вывод с плавающей запятой и шестнадцатеричным целым числом:

std::cout << std::hex << std::uppercase << x << std::endl;

как в следующей полной программе:

#include <iostream>
#include <iomanip>

int main (void) {
    int x = 314159;
    std::cout << std::hex << x << " " << std::uppercase << x << std::endl;
    return 0;
}

который выводит:

4cb2f 4CB2F