Я пытаюсь преобразовать unsigned short в его шестнадцатеричное представление в верхнем регистре и с префиксом 0 с использованием stringstream. Я не могу получить верхний регистр и 0 правильно. вот что у меня есть сейчас:
USHORT id = 1127;
std::stringstream ss;
ss << std::showbase << std::uppercase << std::setfill('0') << std::setw(4) << std::hex << id;
std::string result = ss.str();
это приводит к тому, что базовая база "0x" также имеет верхний регистр, но я хочу, чтобы это было строчным. он также не приводит к префиксному 0 в шестнадцатеричное значение после префиксной базы 0x (в настоящее время 0X). например, теперь будет выводиться 0X467 вместо ожидаемого 0x0467. как это исправить?