Cómo configurar C ++ formato de número a una cierta precisión?
-
22-09-2019 - |
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?
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