Как настроить форматирование чисел C++ с определенной точностью?
-
22-09-2019 - |
Вопрос
Я понимаю, что вы можете использовать iomanip для установки флагов точности для чисел с плавающей запятой (например.имеют 2,0000, а не 2,00).
Есть ли способ сделать это для целых чисел?
Я бы хотел, чтобы шестнадцатеричное число отображалось как 000e8a00, а не просто e8a00 или 00000000, а не 0.
Возможно ли это на C++, используя стандартные библиотеки?
Решение
С манипуляторами:
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;
Другие советы
Вы также можете сделать это с помощью boost::format, который, как я считаю, часто экономит на вводе:
std::cout << boost::format("%08x\n") % 0xe8a00;
Это также позволяет повторно использовать код, если у вас есть несколько мест, где вам нужно выполнить одно и то же форматирование:
boost::format hex08("%08x"); std::cout << hex08 % 0xe8aa << std::endl;
Не связан с StackOverflow