📅  最后修改于: 2023-12-03 14:40:14.756000             🧑  作者: Mango
在C++中,printf()是一个常用的输出函数,可以输出各种数据类型的值和字符串。在此我们将介绍其基本用法和一些高级特性。
下面是一个简单的例子,使用printf()输出一个字符串和一个整数:
#include <cstdio>
int main() {
printf("Hello, world!\n");
int age = 25;
printf("My age is %d.\n", age);
return 0;
}
输出:
Hello, world!
My age is 25.
在上面的代码中,我们首先包含了
在printf()中,格式指示符是由百分号和一个字母组成的,用于告诉printf()函数如何格式化输出。下面是一些常用的格式指示符:
| 格式指示符 | 描述 | | ---------- | ------------------------------ | | %d | 将整数值作为有符号十进制数显示 | | %u | 将整数值作为无符号十进制数显示 | | %x、%X | 将整数值作为十六进制数显示 | | %f、%lf | 将浮点数值显示为小数 | | %c | 将字符值显示 | | %s | 将字符串值显示 |
printf()函数可以通过在格式指示符中添加一些修饰符来精细控制输出格式,如调整输出宽度、精度和填充字符。下面是一些常用的修饰符:
| 修饰符 | 描述 | | ------ | ---------------------------------------------------- | | %nd | 指定输出宽度为n列,若输出文字长度不足n列,则在前面用空格补齐 | | %0nd | 指定输出宽度为n列,若输出文字长度不足n列,则在前面用0补齐 | | %.nf | 指定输出精度为n位小数 | | %m.nf | 指定输出宽度为m列,输出精度为n位小数,若不足m列,则在前面用空格补齐 |
下面是一些使用修饰符的示例:
#include <cstdio>
int main() {
int x = 123;
printf("x = %5d\n", x); // 输出5个字符,右对齐,左侧补空格
printf("x = %05d\n", x); // 输出5个字符,右对齐,左侧补0
double y = 1.23456;
printf("y = %.2f\n", y); // 输出2位小数
printf("y = %6.2f\n", y); // 输出6个字符(包括小数点和2位小数),右对齐,左侧补空格
printf("y = %-6.2f\n", y); // 输出6个字符(包括小数点和2位小数),左对齐,右侧补空格
printf("y = %06.2f\n", y); // 输出6个字符(包括小数点和2位小数),右对齐,左侧补0
return 0;
}
输出:
x = 123
x = 00123
y = 1.23
y = 1.23
y = 1.23
y = 001.23
printf()函数可以使用一些特殊字符和转义序列控制输出格式和颜色。下面是一些常用的转义序列:
| 转义序列 | 描述 | | ---------- | --------------------------------------------------- | | \n | 换行 | | \t | 制表符 | | \r | 回车符 | | \b | 退格符 | | \\ | 输出一个反斜杠 | | \" | 输出一个双引号 | | \' | 输出一个单引号 | | \033[40m | 改变背景色为黑色 | | \033[41m | 改变背景色为红色 | | \033[42m | 改变背景色为绿色 | | \033[43m | 改变背景色为黄色 | | \033[44m | 改变背景色为蓝色 | | \033[45m | 改变背景色为紫色 | | \033[46m | 改变背景色为天蓝色 | | \033[47m | 改变背景色为白色 | | \033[0m | 改变颜色和背景色为默认值,即黑色字体和白色背景 | | \033[m | 改变颜色和背景色为默认值,即黑色字体和白色背景 | | \033[30m | 改变字体颜色为黑色 | | \033[31m | 改变字体颜色为红色 | | \033[32m | 改变字体颜色为绿色 | | \033[33m | 改变字体颜色为黄色 | | \033[34m | 改变字体颜色为蓝色 | | \033[35m | 改变字体颜色为紫色 | | \033[36m | 改变字体颜色为天蓝色 | | \033[37m | 改变字体颜色为白色 |
下面是一些使用转义序列的示例:
#include <cstdio>
int main() {
printf("This is a tab character: \t\t\t.\n");
printf("This is a backspace character: \b\b\b.\n");
printf("This is a carriage return character:\r.\n");
printf("This is a percent character: %%.\n");
printf("This is a newline character: \\\n.\n");
printf("This is a double quote character: \\\".\n");
printf("This is a single quote character: \\'.\n");
printf("\033[31mThis text has a red color.\033[0m\n");
printf("\033[42mThis text has a green background.\033[0m\n");
printf("\033[32;45mThis text has a green foreground color and a magenta background.\033[0m\n");
return 0;
}
输出:
printf()函数也可以将输出写入文件,可以使用fopen()函数打开文件,使用fprintf()函数将输出写入文件,最后使用fclose()函数关闭文件。下面是一个示例:
#include <cstdio>
int main() {
FILE *fp = fopen("output.txt", "w");
if (fp == nullptr) {
printf("Failed to open file.\n");
return 1;
}
fprintf(fp, "This is a test.\n");
fclose(fp);
return 0;
}
这段代码将在程序所在目录中创建一个名为output.txt的文件,并将"This is a test.\n"写入该文件中。
现在你已经学会了在C++中使用printf()函数进行格式化输出,包括基本用法、附加特性和将输出写入文件等。对于需要更加复杂的输出格式和颜色,你可以使用更加强大的库,如Boost.Format和fmt等。