【发布时间】:2014-09-28 08:54:12
【问题描述】:
我正在尝试使用 stringstream 将 unsigned short 转换为其十六进制表示形式,并以 0 为前缀。我似乎无法正确理解大写字母和 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' 基数也为大写,但我希望它为小写。它还导致前缀 0x 基数(当前为 0X)之后的十六进制值没有前缀 0。例如,这将输出 0X467 而不是预期的 0x0467。我该如何解决这个问题?
【问题讨论】:
标签: c++ c++11 hex string-formatting stringstream