当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ printf()用法及代码示例


在本教程中,我们将借助示例了解 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 写入一个字符串
di 将有符号整数转换为十进制表示
o 将无符号整数转换为八进制表示
Xx 将无符号整数转换为十六进制表示
u 将无符号整数转换为十进制表示
Ff 将浮点数转换为十进制表示
Ee 将浮点数转换为十进制 index 表示法
Aa 将浮点数转换为十六进制 index
Gg 将浮点数转换为十进制或十进制 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++ printf()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。