Como configurar o C++ Número de Formatação para uma determinada precisão?
-
22-09-2019 - |
Pergunta
Eu entendo que você pode usar iomanip para definir uma precisão bandeiras para carros alegóricos (e.g.tem 2.0000 como oposição a 2.00).
Há uma maneira possível de o fazer, para números inteiros?
Eu gostaria de um número hexadecimal para mostrar como 000e8a00 ao invés de incluir somente e8a00 ou 00000000, em vez de 0.
Isso é possível em C++, usando as bibliotecas padrão?
Solução
Com manipuladores:
std::cout << std::setfill('0') << std::setw(8) << std::hex << 0 << std::endl;
Sem manipuladores:
std::cout.fill('0');
std::cout.width(8);
std::cout.setf(std::ios::hex, std::ios::basefield);
std::cout << 42 << std::endl;
Outras dicas
Você também pode fazer isso com o Boost :: Format, que eu acho que muitas vezes salva digitar:
std::cout << boost::format("%08x\n") % 0xe8a00;
Ele também permite uma boa reutilização de código, se você tiver vários lugares, precisa fazer a mesma formatação:
boost::format hex08("%08x"); std::cout << hex08 % 0xe8aa << std::endl;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow