C++通过cout输出左对齐/右对齐文本
C++通过cout输出左对齐/右对齐文本
内容
在 C++ 中使用 std::cout 控制对齐方式和填充字符时,需借助 <iomanip> 头文件中的流操作符。以下是详细解决方案:
1. 基础操作符
| 操作符/函数 | 作用 | 示例 |
|---|---|---|
std::setw(n) |
设置字段宽度为 n 字符 |
cout << setw(10); |
std::left |
左对齐(默认右对齐) | cout << left; |
std::right |
右对齐(默认数值右对齐) | cout << right; |
std::setfill(c) |
设置填充字符为 c |
cout << setfill('*'); |
2. 左对齐 + 自定义填充
#include <iostream>
#include <iomanip> // 必须包含此头文件
int main() {
int value = 42;
std::string text = "Hello";
// 左对齐,宽度 10,填充字符 '-'
std::cout << std::left << std::setfill('-');
std::cout << std::setw(10) << value << "\n"; // 输出:42--------
std::cout << std::setw(10) << text << "\n"; // 输出:Hello-----
return 0;
}
3. 右对齐 + 自定义填充
#include <iostream>
#include <iomanip>
int main() {
double price = 99.95;
std::string code = "A1";
// 右对齐,宽度 8,填充字符 '.'
std::cout << std::right << std::setfill('.');
std::cout << std::setw(8) << price << "\n"; // 输出:..99.95
std::cout << std::setw(8) << code << "\n"; // 输出:.....A1
return 0;
}
4. 混合对齐与填充
#include <iostream>
#include <iomanip>
int main() {
// 左对齐 + 填充 '*'
std::cout << std::left << std::setfill('*');
std::cout << std::setw(6) << "ID" << "|"; // 输出:ID****|
// 右对齐 + 填充 '0'
std::cout << std::right << std::setfill('0');
std::cout << std::setw(5) << 7 << "\n"; // 输出:ID****|00007
return 0;
}
5. 重要注意事项
-
作用域:
std::left/std::right和std::setfill是持久性设置,直到被修改。std::setw(n)仅对下一次输出有效。
-
默认行为:
- 字符串:默认左对齐
- 数值:默认右对齐
-
字段宽度不足:
- 若数据长度超过
setw(n)的n,完整输出数据,不截断。
- 若数据长度超过
6. 完整示例
#include <iostream>
#include <iomanip>
int main() {
// 表头
std::cout << std::left << std::setfill(' ');
std::cout << std::setw(15) << "Product"
<< std::setw(10) << "Price"
<< std::setw(8) << "Stock" << "\n";
// 分隔线
std::cout << std::setfill('-') << std::setw(33) << "" << "\n";
std::cout << std::setfill(' ');
// 数据行
std::cout << std::left << std::setw(15) << "Apple"
<< std::right << std::setw(10) << "$1.99"
<< std::setw(8) << 100 << "\n";
std::cout << std::left << std::setw(15) << "Banana"
<< std::right << std::setw(10) << "$0.99"
<< std::setw(8) << 250 << "\n";
return 0;
}
输出效果:
Product Price Stock
---------------------------------
Apple $1.99 100
Banana $0.99 250
通过组合这些操作符,可以灵活控制输出的对齐方式和填充字符,满足表格、报表等格式化需求。

浙公网安备 33010602011771号