當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。