11

是否可以ostream使用字符A-F而不是输出十六进制数字a-f

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

这个输出abc,而我更愿意看到ABC.

4

2 回答 2

12

是的,您可以使用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
于 2010-11-07T09:25:50.287 回答
1

在 C++20 中,您将能够使用它std::format来执行此操作:

std::cout << std::format("{:X}\n", 0xABC);  

输出:

ABC

同时你可以使用基于的 {fmt}std::format。{fmt} 还提供了print使这更容易和更高效的功能(godbolt):

fmt::print("{:X}\n", 0xABC); 

免责声明:我是 {fmt} 和 C++20 的作者std::format

于 2021-03-03T04:36:55.773 回答