在本教程中,我們將借助示例了解 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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。