C++如何切换std::hex和std::dec进制?
std::hex和std::dec会永久改变流的整数输出进制,持续生效直至被另一进制操纵器覆盖;调用std::hex后,该流所有后续整数输出均默认为十六进制。
std::hex 和 std::dec 会永久改变流的整数输出进制,持续生效直至被另一进制操纵器覆盖;调用 std::hex 后,该流所有后续整数输出均默认为十六进制。

std::hex 和 std::dec 是作用于流对象(如 std::cout)的格式操纵器,它们会**永久改变该流后续整数输出的进制**,直到被另一个进制操纵器覆盖。不是“切换一次就只影响下一次”,而是持续生效。
std::hex / std::dec 会影响整个流的状态
一旦对某个流调用 std::hex,之后所有通过该流输出的整数(int、long 等)默认都按十六进制输出,除非显式重置为 std::dec 或 std::oct:
std::cout << std::hex << 255 << " " << 16 << "\n"; // 输出:ff 10 std::cout << std::dec << 255 << " " << 16 << "\n"; // 输出:255 16
注意:std::hex 不影响浮点数、字符串或指针的输出格式;它只对整型值的 operator<< 生效。
std::hex 和 std::dec 是流操纵器,不是函数调用参数
它们不能传给函数或作为变量保存,必须直接用于流表达式中(通常用 << 连接):
- ✅ 正确:
std::cout << std::hex << x; - ❌ 错误:
std::hex(x);(无此函数) - ❌ 错误:
auto f = std::hex;(不可取址,不是普通函数对象)
它们是无状态的、轻量级的流操纵器,底层是函数指针或函数对象类型,专为流插入操作符设计。
避免意外残留:在局部控制时记得恢复
如果只希望某次输出用十六进制,又不想影响后续代码,常见做法是临时保存/恢复流格式标志:
std::ios_base::fmtflags f = std::cout.flags(); // 保存当前格式 std::cout << std::hex << 4095; std::cout.flags(f); // 恢复原始格式
更安全的替代方式(推荐)是使用 std::ostringstream 隔离格式:
std::ostringstream oss; oss << std::hex << 4095; std::string hex_str = oss.str(); // "fff" // std::cout 不受影响
直接在 std::cout 上反复切进制容易遗漏恢复,尤其在函数中途返回或异常路径中——这是最常被忽略的隐患。
std::hex 不控制大小写和前缀,需额外设置
std::hex 默认输出小写字母(a-f),且不带 0x 前缀。若需要大写或前缀,得配合其他操纵器:
std::uppercase→ 输出FF而非ffstd::showbase→ 输出0xff或0XFF(取决于是否uppercase)
std::cout << std::hex << std::showbase << std::uppercase
<< 255 << "\n"; // 输出:0XFF
这些标志同样持久生效,和 std::hex 一样,容易一设忘收。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















