كيفية إعداد تنسيق رقم 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