C++ Academy · 课时

使用 iomanip 格式化输出

使用 iomanip 头文件控制宽度、精度、对齐方式和数字进制

第 2 / 4 课13 个步骤

使用 iomanip 格式化输出 是 CoddyKit 上的免费 C++ Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C++ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C++ Academy 课程共包含 4 节课。

iomanip 头文件

<iomanip> 头文件提供了操纵符——您可以将这些特殊对象传入 cout,以改变其格式状态。

std::setw:字段宽度

std::setw(n) 只为下一个字段设置最小宽度。较短的值会以填充字符补齐。

#include <iomanip>
std::cout << std::setw(10) << "Name" << std::setw(5) << "Age\n";
std::cout << std::setw(10) << "Ada"  << std::setw(5) << 36 << "\n";

std::setfill:填充字符

默认情况下,setw 使用空格进行填充。请使用 setfill 更改填充字符——该设置会持续生效。

std::cout << std::setfill('0') << std::setw(4) << 42;
// 0042

std::left 与 std::right

在 setw 字段中对齐文本。默认采用右对齐。

std::cout << std::left << std::setw(10) << "Ada" << "|\n";
std::cout << std::right << std::setw(10) << "Ada" << "|\n";

std::setprecision

控制有效数字的数量;与 std::fixed 一起使用时,则控制小数位数。

double pi = 3.14159265;
std::cout << std::setprecision(4) << pi << "\n";  // 3.142
std::cout << std::fixed << std::setprecision(2) << pi; // 3.14

定点、科学计数法与十六进制浮点格式

使用 std::fixed、std::scientific 和 std::hexfloat 在不同数字格式之间切换。

double x = 12345.6789;
std::cout << std::scientific << x << "\n"; // 1.234568e+04
std::cout << std::fixed << x << "\n";      // 12345.678900

整数进制:hex、oct、dec

以不同进制输出整数。std::showbase 会添加前缀(0x、0)。

int n = 255;
std::cout << std::hex << n << "\n";  // ff
std::cout << std::oct << n << "\n";  // 377
std::cout << std::dec << n << "\n";  // 255 (default)

std::boolalpha

将布尔值输出为单词,而不是 1/0。

std::cout << std::boolalpha << true << "\n";  // true
std::cout << std::noboolalpha << true << "\n"; // 1

操纵符会持续生效

大多数操纵符会一直生效,直到被更改。setw 是例外——它只对下一个字段生效。

使用 std::quoted 安全处理字符串

<iomanip> 中的 std::quoted 会为字符串添加双引号,并转义其中的引号。它非常适合处理日志行。

std::string name = "Ada \"Countess\"";
std::cout << std::quoted(name);
// "Ada \"Countess\""

C++20 std::format

现代 C++20 使用 std::format 替代大多数 iomanip 用法——它提供类似 printf 的 API,并且具有类型安全性。

#include <format>
std::cout << std::format("{:>10} | {:.2f}\n", "pi", 3.14159);

快速检查

哪一个操纵符必须为每个输出字段重新应用?

回顾

<iomanip> 提供了用于控制宽度、精度、对齐方式、进制和引号的操纵符。setw 只对单个字段生效;其他操纵符都会持续生效。在 C++20 中,请优先使用 std::format,以获得更清晰的格式化代码。

免费开始

用 AI 导师学习 C++ — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
51
课程
203

常见问题解答

「使用 iomanip 格式化输出」课时是免费的吗?

是的 — 「使用 iomanip 格式化输出」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C++ Academy 课程的其余内容,请升级到 CoddyKit PRO。 C++ Academy 课程共包含 4 节课。

「使用 iomanip 格式化输出」这节课中我会学到什么?

使用 iomanip 头文件控制宽度、精度、对齐方式和数字进制 你通过在浏览器中直接运行的动手代码来练习 C++ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C++ Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C++ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「使用 iomanip 格式化输出」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C++ Academy 课中编写并运行代码吗?

能。每节 C++ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 正确使用 std::cin 和 std::cout
  2. 使用 iomanip 格式化输出
  3. 使用 getline 安全读取输入
  4. 使用 std::cerr 和 std::clog
← 返回 C++ Academy