是否可以ostream
使用字符A-F
而不是输出十六进制数字a-f
?
int x = 0xABC;
std::cout << std::hex << x << std::endl;
这个输出abc
,而我更愿意看到ABC
.
是的,您可以使用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
在 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
。