سؤال

وأنا أحاول إخراج قيمة عرافة من شار وتهيئته بطريقة لطيفة.

والمطلوبة: 0x01 : value 0x1

وكل ما يمكنني عليه هو: 00x1 : value 0x1 // أو 0x1 إذا كنت لا تستخدم iomanip

وهنا رمز لدي، أعلن "الفصل" أن يكون الحرف غير الموقعة. هل هناك أي طريقة أخرى للقيام بذلك بعضا من التحقق من قيمة ويدويا إضافة "0" ؟؟

cout << showbase;
cout << hex << setw(2) << setfill('0') << (int) ch;

وتحرير:

ولقد وجدت حل واحد على الانترنت:

cout << internal << setw(4) << setfill('0') << hex << (int) ch
هل كانت مفيدة؟

المحلول

std::cout << "0x" << std::noshowbase << std::hex << std::setw(2) << std::setfill('0') << (int)ch;

ومنذ منصات setw إلى يسار الرقم المطبوع العام (بعد تطبيق showbaseshowbase غير قابلة للاستخدام في قضيتك. بدلا من ذلك، طباعة يدويا من القاعدة كما هو مبين أعلاه.

نصائح أخرى

في واحد على مشاريعي فعلت ذلك:

ostream &operator<<(ostream &stream, byte value)
{
     stream << "0x" << hex << (int)value;
     return stream;
}

وأنا surchaged المشغل << لإخراج تيار، وكل ما كان تم إظهار بايت في عشري. البايت هو typedef وعن الحرف غير الموقعة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top