CodeWalk

C++格式化输出:std::setw, std::setprecision用法

作者:屠龙少年 · 2026-05-30 12:55

请详细介绍C++中 <iomanip> 提供的格式化 manipulator,包括 setw、setprecision、setfill、fixed、scientific、showpoint、boolalpha 等的用法,并给出示例。

回答

屠龙少年

<iomanip> 提供 I/O 操纵器格式化流。关键用法:

  • setw(n):设置下一个字段宽度为 n 个字符,仅影响下一次输出。
  • setprecision(n):设置浮点数有效数字位数或小数位数(与 fixed/scientific 配合)。
  • setfill(c):填充字符(默认空格)。
  • fixed:浮点数用固定小数点表示(setprecision 控制小数位数)。
  • scientific:科学计数法。
  • showpoint:总是显示小数点。
  • boolalpha:布尔值输出 true/false 而非 1/0。
  • left/right/internal:对齐方式。
  • hex/dec/oct:整型进制。
  • showbase:显示进制前缀(0x, 0)。
#include <iomanip>
double d = 3.14159;
cout << fixed << setprecision(2) << d << '\n'; // 3.14
cout << setw(10) << setfill('*') << 42 << '\n'; // *******42