C++中使用printf需包含,通过格式字符串控制输出,支持%d、%f、%s等格式符,可指定宽度对齐如%10d,注意类型匹配与避免格式化漏洞,推荐用%s输出std::string的c_str()。

在C++中使用printf风格的格式化输出,主要依赖于C标准库中的头文件。虽然C++推荐使用std::cout进行输出,但在某些场景下(如性能要求高、格式复杂),printf依然非常实用。
包含头文件
要使用printf,必须先包含:
基本语法
printf函数的格式为:
第一个参数是格式字符串,后面跟着要输出的变量。返回值是成功写入的字符数。
立即学习“C++免费学习笔记(深入)”;
常见格式符包括:
- %d 或 %i:输出十进制整数
- %f:输出浮点数
- %c:输出单个字符
- %s:输出字符串
- %.2f:保留两位小数输出浮点数
- %x:以十六进制输出整数
- %p:输出指针地址
示例代码:
#include
int main() {
int age = 25;
double price = 19.99;
const char* name = "Alice";
printf("姓名: %s, 年龄: %d, 价格: %.2f\n", name, age, price);
return 0;
}
控制输出宽度与对齐
可以在格式符中指定最小字段宽度:
- %10d:右对齐,占10个字符宽度
- %-10d:左对齐,占10个字符宽度
- %05d:不足5位时前面补0
例如:
printf("|%10d|\n", 42); // 输出:| 42|printf("|%-10d|\n", 42); // 输出:|42 |
printf("|%05d|\n", 42); // 输出:|00042|
安全建议与注意事项
使用printf时需注意以下几点:
- 确保格式符与参数类型匹配,否则可能导致未定义行为
- 避免使用用户输入直接作为格式字符串(防止格式化字符串漏洞)
- 对于C++字符串(
std::string),需调用.c_str()转换
错误示例(危险):
std::string user_input = "Hello %s";printf(user_input.c_str()); // 如果包含%会出错
正确做法:
printf("%s", user_input.c_str());基本上就这些。C++中使用printf简单高效,适合需要精确控制格式的场合,但要注意类型安全和字符串处理。











