出力を文字ではなくostream
16進数にすることは可能ですか?A-F
a-f
int x = 0xABC;
std::cout << std::hex << x << std::endl;
これは出力しますabc
が、私は見たいと思いますABC
。
はい、使用できますstd::uppercase
。これは、浮動小数点と16進整数の出力に影響します。
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
std::format
C ++ 20では、これを行うために使用できるようになります。
std::cout << std::format("{:X}\n", 0xABC);
出力:
ABC
それまでの間、に基づいて{fmt}ライブラリを使用できます。std::format
{fmt}は、print
これをさらに簡単かつ効率的にする関数も提供します(godbolt)。
fmt::print("{:X}\n", 0xABC);
免責事項:私は{fmt}とC++20の作者ですstd::format
。