Domanda

ho capito che è possibile utilizzare iomanip per impostare un flag di precisione per i galleggianti (per esempio avere 2.0000 invece di 2,00).

C'è un modo possibile per fare questo, per gli interi?

Vorrei un numero esadecimale da visualizzare come 000e8a00 piuttosto che e8a00 o 00000000, piuttosto che 0.

Questo è possibile in C ++, utilizzando le librerie standard?

È stato utile?

Soluzione

Con manipolatori:

std::cout << std::setfill('0') << std::setw(8) << std::hex << 0 << std::endl;

Senza manipolatori:

std::cout.fill('0');
std::cout.width(8);
std::cout.setf(std::ios::hex, std::ios::basefield);
std::cout << 42 << std::endl;

Altri suggerimenti

È anche possibile fare questo con boost :: formato, che trovo spesso salva digitando:

std::cout << boost::format("%08x\n") % 0xe8a00;

Essa consente anche di qualche bella riutilizzo del codice, se si dispone di più posti è necessario fare la stessa formattazione:

boost::format hex08("%08x");
std::cout << hex08 % 0xe8aa << std::endl;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top