Как я могу передавать шестнадцатеричные числа с помощью A-F (а не a-f)? - PullRequest
10 голосов
/ 07 ноября 2010

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

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

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

1 Ответ

12 голосов
/ 07 ноября 2010

Да, вы можете использовать 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
...