printf通过格式符如%d、%.2f控制输出,高效适用于性能要求高场景;2. cout结合iomanip使用setw、fixed等实现类型安全的灵活格式化。

在C++中,格式化输出主要有两种方式:使用C语言风格的printf函数和C++标准库中的cout对象。两者各有特点,适用于不同场景。下面详细介绍它们的用法和控制格式的方法。
1. 使用 printf 进行格式化输出
printf 来自 C 标准库,需包含头文件
基本语法:
printf("格式字符串", 参数列表);常用格式符:
立即学习“C++免费学习笔记(深入)”;
- %d:输出十进制整数
- %f:输出浮点数(默认6位小数)
- %.2f:保留两位小数
- %c:输出单个字符
- %s:输出字符串
- %x:以十六进制输出整数
- %o:以八进制输出整数
- %u:输出无符号整数
示例代码:
#includeint main() {
int num = 42;
double pi = 3.1415926;
char ch = 'A';
const char* str = "Hello";
printf("整数: %d\n", num);
printf("浮点数: %.2f\n", pi);
printf("字符: %c, 字符串: %s\n", ch, str);
printf("十六进制: %x\n", num);
return 0;
}
宽度与对齐控制:
- %5d:至少占5个字符宽度,右对齐
- %-5d:左对齐,占5个字符
- %05d:不足补零,如输出 00042
2. 使用 cout 进行格式化输出
cout 是 C++ 的流对象,来自 iostream>,结合
基本用法:
#includeusing namespace std;
int main() {
int num = 42;
double pi = 3.1415926;
cout cout return 0;
}
常用控制符(需包含
Python v2.4版chm格式的中文手册,内容丰富全面,不但是一本手册,你完全可以把她作为一本Python的入门教程,教你如何使用Python解释器、流程控制、数据结构、模板、输入和输出、错误和异常、类和标准库详解等方面的知识技巧。同时后附的手册可以方便你的查询。
- setw(n):设置字段宽度
- setprecision(n):设置精度(总位数或小数位数,取决于是否启用 fixed)
- fixed:启用定点表示法,此时 precision 控制小数位数
- scientific:科学计数法
- left / right:左右对齐
- setfill(c):设置填充字符
示例:控制浮点数输出
#include#include
using namespace std;
int main() {
double pi = 3.1415926;
cout return 0;
}
示例:设置宽度与填充
cout3. printf 与 cout 的对比
printf 优点:
- 格式控制直观,类似模板
- 性能略高,尤其在大量输出时
- 跨语言通用,熟悉C的人容易上手
缺点:
- 类型不安全,格式符与参数不匹配会导致未定义行为
- 不支持自定义类型,除非转为基本类型
cout 优点:
- 类型安全,编译器自动选择合适的输出函数
- 支持运算符重载,可自定义类的输出
- 组合灵活,可与其他流(如文件、字符串)统一接口
缺点:
- 格式控制较繁琐,需引入额外头文件
- 状态持久,例如设置了 fixed 后需手动取消
4. 实际使用建议
在现代 C++ 开发中,推荐优先使用 cout,尤其是在需要类型安全或扩展性的项目中。对于性能敏感且格式固定的日志输出,printf 或其变体(如 std::format,C++20)可能更合适。
C++20 引入了 std::format,结合了两者的优点,未来有望成为主流:
// C++20 示例(需编译器支持)#include
#include
std::cout
基本上就这些。掌握 printf 和 cout 的格式控制,能让你在不同场景下灵活输出数据。









