Angenommen, ich habe ein dword, das ich in hex ausgeben soll mit std :: cout und links-pad mit Nullen, so 0xabcd wird als 0x0000abcd angezeigt. Es scheint, wie Sie hätte dies tun:Drucken zero-padded hex mit std :: cout
uint32_t my_int = 0xabcd;
std::cout << "0x" << std::hex << std::setw(8) << std::setfill('0')
<< my_int << std::endl;
Das für etwas lächerlich scheint, die mit printf("0x%08X\n", my_int);
in C erreicht werden kann. Gibt es eine Möglichkeit, dies kürzer zu machen, während immer noch std :: cout für die Ausgabe verwendet wird (neben der Verwendung von Namespace std)?
eine Funktion zur Ausgabe als formatierte hex schreiben und es nennen. – GManNickG
Kürzere ist eine relative Sache, nehme ich an. Wenn Sie denken, dass der Code hinter diesem 'printf()' kurz ist, kann ich Ihnen versichern, dass es alles andere als ist. Sie müssen nur Ihre eigenen rollen (was ähnlich wie Sie hier schockierend aussehen wird). Sie können immer ein Manipulator Klasse/Operator-Paar schreiben, die so etwas wie 'std :: cout << as_hex (n, 8,0) erlaubt;' – WhozCraig