是否可以使ostream
输出带字符A-F
而不是a-f
的十六进制数字?
int x = 0xABC;
std::cout << std::hex << x << std::endl;
这会输出abc
,而我希望看到ABC
。
答案 0 :(得分: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
答案 1 :(得分:1)
在 C++20 中,您将能够使用 std::format
来执行此操作:
std::cout << std::format("{:X}\n", 0xABC);
输出:
ABC
在此期间您可以使用 the {fmt} library,std::format
是基于。 {fmt} 还提供了 print
函数,使这变得更加简单和高效 (godbolt):
fmt::print("{:X}\n", 0xABC);
免责声明:我是 {fmt} 和 C++20 std::format
的作者。