#include <iomanip>
是 C++ 标准库中用于 格式化输入/输出(I/O) 的头文件,主要提供了一些 流操作符(manipulators),用于控制输出格式(如字段宽度、精度、对齐方式等)。它是 <iostream>
的扩展,专门用于更精细的 I/O 控制。
主要功能
<iomanip>
中常用的流操作符包括:
1. 设置字段宽度(std::setw
)
- 作用:指定下一个输出项的最小宽度(不足时填充空格)。
- 示例:
#include <iostream> #include <iomanip> // 必须包含此头文件 int main() { std::cout << std::setw(10) << "Hello" << std::setw(5) << 42 << std::endl; // 输出: " Hello 42"("Hello"占10字符,42占5字符) return 0; }
setw
只对 紧随其后的一个输出项 生效。
2. 设置填充字符(std::setfill
)
- 作用:指定填充空白位置的字符(默认是空格)。
- 示例:
std::cout << std::setfill('*') << std::setw(10) << "Hi" << std::endl; // 输出: "********Hi"(用 * 填充宽度不足的部分)
3. 控制浮点数精度(std::setprecision
)
- 作用:设置浮点数输出的 有效数字位数 或 小数位数(取决于
std::fixed
)。 - 示例:
double pi = 3.1415926535; std::cout << std::setprecision(4) << pi << std::endl; // 输出 3.142(四舍五入) // 结合 std::fixed 固定小数位数 std::cout << std::fixed << std::setprecision(2) << pi; // 输出 3.14
4. 控制对齐方式(std::left
, std::right
, std::internal
)
- 作用:指定输出内容的对齐方式。
- 示例:
std::cout << std::left << std::setw(10) << "Hello"; // 左对齐:"Hello " std::cout << std::right << std::setw(10) << "Hello"; // 右对齐:" Hello"
5. 其他常用操作符
操作符 | 作用 | 示例 |
---|---|---|
std::hex / std::oct / std::dec | 设置整数的进制(16/8/10) | std::cout << std::hex << 255; → ff |
std::uppercase | 16进制字母大写 | std::cout << std::uppercase << std::hex << 255; → FF |
std::boolalpha | 布尔值输出为 true /false | std::cout << std::boolalpha << true; → true |
为什么需要 <iomanip>
?
<iostream>
只提供基本的输入输出(如cout << "Hello";
),但无法精细控制格式(如宽度、精度等)。<iomanip>
补充了这些功能,让输出更美观、符合需求(如表格对齐、固定小数位数等)。
完整示例
#include <iostream>
#include <iomanip>
int main() {
double price = 99.99;
int quantity = 5;
// 输出一个对齐的表格
std::cout << std::left << std::setw(10) << "Item"
<< std::right << std::setw(10) << "Price"
<< std::setw(10) << "Quantity" << std::endl;
std::cout << std::left << std::setw(10) << "Apple"
<< std::right << std::fixed << std::setprecision(2)
<< std::setw(10) << price
<< std::setw(10) << quantity << std::endl;
return 0;
}
输出:
Item Price Quantity
Apple 99.99 5
总结
<iomanip>
用于 格式化输出(宽度、精度、对齐、进制等)。- 常用操作符:
std::setw(n)
:设置字段宽度。std::setprecision(n)
:设置浮点数精度。std::setfill(c)
:设置填充字符。std::left
/std::right
:控制对齐方式。
- 适用于 表格输出、财务计算、日志格式化 等场景。