Pregunta

Me entender que se puede utilizar para establecer un iomanip banderas de precisión para los flotadores (por ejemplo, tener 2,0000 frente a 2,00).

¿Hay una manera de hacer esto posible, para los números enteros?

Me gustaría tener un número hexadecimal de pantalla como 000e8a00 en lugar de sólo e8a00 o 00000000 en lugar de 0.

Es esto posible en C ++, utilizando las bibliotecas estándar?

¿Fue útil?

Solución

Con manipuladores:

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

Sin manipuladores:

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

Otros consejos

También puede hacer esto con impulso :: formato, lo que encuentro a menudo ahorra escribiendo:

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

También permite un poco de reutilización de código agradable, si tiene varios lugares que tiene que hacer el mismo formato:

boost::format hex08("%08x");
std::cout << hex08 % 0xe8aa << std::endl;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top