Как настроить форматирование чисел в C ++ с определенной точностью? - PullRequest
5 голосов
/ 24 февраля 2010

Я понимаю, что вы можете использовать iomanip для установки флагов точности для чисел с плавающей запятой (например, иметь 2,0000 вместо 2,00).

Есть ли способ сделать это для целых чисел?

Я бы хотел, чтобы шестнадцатеричное число отображалось как 000e8a00, а не просто как e8a00 или 00000000, а не 0.

Возможно ли это в C ++, используя стандартные библиотеки?

Ответы [ 2 ]

7 голосов
/ 24 февраля 2010

с манипуляторами:

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

без манипуляторов:

std::cout.fill('0');
std::cout.width(8);
std::cout.setf(std::ios::hex, std::ios::basefield);
std::cout << 42 << std::endl;
5 голосов
/ 24 февраля 2010

Вы также можете сделать это с boost :: format, который я часто сохраняю, набрав:

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

Это также позволяет повторно использовать код, если у вас есть несколько мест, вам нужно выполнить одинаковое форматирование:

boost::format hex08("%08x");
std::cout << hex08 % 0xe8aa << std::endl;
...