سؤال
وأنا أحاول إخراج قيمة عرافة من شار وتهيئته بطريقة لطيفة.
والمطلوبة: 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
إلى يسار الرقم المطبوع العام (بعد تطبيق showbase
)، showbase
غير قابلة للاستخدام في قضيتك. بدلا من ذلك، طباعة يدويا من القاعدة كما هو مبين أعلاه.
نصائح أخرى
في واحد على مشاريعي فعلت ذلك:
ostream &operator<<(ostream &stream, byte value)
{
stream << "0x" << hex << (int)value;
return stream;
}
وأنا surchaged المشغل << لإخراج تيار، وكل ما كان تم إظهار بايت في عشري. البايت هو typedef وعن الحرف غير الموقعة.
لا تنتمي إلى StackOverflow