在本教程中,我们将借助示例了解 C++ printf() 函数。
C++ 中的printf()
函数用于将格式化字符串写入标准输出(stdout
)。它在cstdio 头文件中定义。
示例
#include <cstdio>
int main() {
int age = 23;
// print a string literal
printf("My age is ");
// print an int variable
printf("%d", age);
return 0;
}
// Output: My age is 23
printf() 语法
用法:
printf(const char* format, ...);
这里,
format
是要写入标准输出的字符串- 上面代码中的
...
表示您可以将多个参数传递给printf()
。
参数:
printf()
函数采用以下参数:
- format- 指向写入到的以空字符结尾的字符串 (C-string) 的指针
stdout
.它由字符和可选的格式说明符组成,以%
. - ...- 指定要打印的数据的其他附加参数。它们根据格式说明符按顺序出现。
返回:
printf()
函数返回:
- 成功- 写入的字符数
- 失败时- 负值
printf() 原型
cstdio 头文件中定义的printf()
函数的原型是:
int printf(const char* format, ... );
示例 1:C++ printf()
#include <cstdio>
int main() {
int num = 5;
char my_name[] = "Lincoln";
// print string and int variable
printf("num = %d \n", num);
// print string and char array
printf("My name is %s", my_name);
return 0;
}
输出
num = 5 My name is Lincoln
在这个程序中,我们使用了 printf()
函数来打印整数 num
和 C-string my_name
。
printf("num = %d \n", num);
printf("My name is %s", my_name);
这里,
%d
被输出中的num
变量替换\n
是一个转义序列打印新行的字符%s
替换为my_name
C-string。
格式说明符
format
参数printf()
可以包含格式说明符开始于%
.这些说明符被格式字符串后面的各个变量的值替换。
格式说明符包含以下部分:
- 领先的
%
符号 flags
- 一个或多个修改转换行为的标志(可选)-
:左对齐字段内的结果。默认情况下它是右对齐的。+
:结果的符号附加到值的开头,即使是正结果也是如此。- space: 如果没有符号,则在结果的开头附加一个空格。
#
:执行另一种转换形式。0
:用于整数和浮点数。前导零用于填充数字而不是空格。
width
- 一个可选的*
或整数值,用于指定最小宽度字段。precision
- 一个可选字段,由.
后跟*
或整数或无以指定精度。length
- 一个可选的长度修饰符,用于指定参数的大小。specifier
- 转换格式说明符。
printf() 格式说明符原型
printf()
格式说明符的一般原型是:
%[flags][width][.precision][length]specifier
常用格式说明符
下表列出了一些常用的格式说明符:
格式说明符 | 说明 |
---|---|
% |
一个 % 后跟另一个 % 字符将 % 打印到屏幕上 |
c |
写入单个字符 |
s |
写入一个字符串 |
d 或 i |
将有符号整数转换为十进制表示 |
o |
将无符号整数转换为八进制表示 |
X 或 x |
将无符号整数转换为十六进制表示 |
u |
将无符号整数转换为十进制表示 |
F 或 f |
将浮点数转换为十进制表示 |
E 或 e |
将浮点数转换为十进制 index 表示法 |
A 或 a |
将浮点数转换为十六进制 index |
G 或 g |
将浮点数转换为十进制或十进制 index 表示法 |
n |
- 返回到目前为止写入的字符数 - 结果写入参数指向的值 - 参数必须是指向的指针 signed int |
p |
写入定义指针的实现定义的字符序列 |
示例 2:C++ printf() 上的更多示例
#include <cstdio>
int main() {
char ch = 'a';
float a = 5.0, b = 3.0;
int num = 10;
// set precision to 3 decimal places
printf("%.3f / %.3f = %.3f \n", a, b, a / b);
// set width to 5 digits with *
printf("Setting width %*c \n", 5, ch);
// get octal value of an integer
printf("Octal equivalent of %d is %o", num, num);
return 0;
}
输出
5.000 / 3.000 = 1.667 Setting width a Octal equivalent of 10 is 12
在这个程序中,我们使用了 3 次printf()
函数。
1. 在第一 printf()
函数:
%.3f
- 将float
变量的精度设置为小数点后 3 位。- 第一个
%.3f
被第二个参数a
的值替换。 - 第二个
%.3f
被第三个参数b
的值替换。 - 最后一个
%.3f
被第四个参数a / b
的值替换。
2.在第二 printf()
函数:
%*c
- 以未指定的宽度打印 char 变量ch
(第三个参数)。- 宽度稍后由第二个参数指定为五位数
5
.
3.在第三 printf()
函数:
%d
- 以十进制数字系统打印int
变量num
的值%o
- 以八进制数字系统打印int
变量num
的值
此外,转义字符\n
打印一个新行。
相关用法
- C++ priority_queue top()用法及代码示例
- C++ priority_queue pop()用法及代码示例
- C++ priority_queue::empty()、priority_queue::size()用法及代码示例
- C++ priority_queue push()用法及代码示例
- C++ priority_queue value_type用法及代码示例
- C++ priority_queue size()用法及代码示例
- C++ priority_queue swap()用法及代码示例
- C++ priority_queue::top()用法及代码示例
- C++ priority_queue::push()、priority_queue::pop()用法及代码示例
- C++ priority_queue empty()用法及代码示例
- C++ priority_queue emplace()用法及代码示例
- C++ priority_queue::swap()用法及代码示例
- C++ puts()用法及代码示例
- C++ putc()用法及代码示例
- C++ pow()用法及代码示例
- C++ putwchar()用法及代码示例
- C++ perror()用法及代码示例
- C++ putwc()用法及代码示例
- C++ complex polar()用法及代码示例
- C++ putchar()用法及代码示例
注:本文由纯净天空筛选整理自 C++ printf()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。