在本教程中,我們將借助示例了解 C++ sprintf() 函數。
C++ 中的sprintf()
函數用於將格式化字符串寫入字符串緩衝區。它在cstdio 頭文件中定義。
示例
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
char buffer[100];
int age = 23;
// print "My age is " and age variable to buffer variable
sprintf(buffer, "My age is %d", age);
// print buffer variable
cout << buffer;
return 0;
}
// Output: My age is 23
sprintf() 語法
用法:
sprintf(char* buffer, const char* format, ...);
這裏,
buffer
是我們需要寫入的字符串緩衝區format
是要寫入字符串緩衝區的字符串- 上麵代碼中的
...
表示您可以將多個參數傳遞給sprintf()
。
參數:
sprintf()
函數采用以下參數:
- buffer- 指向要寫入結果的字符串緩衝區的指針。
- format- 指向寫入字符串緩衝區的空終止字符串 (C-string) 的指針。它由字符和可選的格式說明符組成,以
%
. - ...- 指定要打印的數據的其他附加參數。它們根據格式說明符按順序出現。
返回:
sprintf()
函數返回:
- 成功- 為足夠大的緩衝區寫入的字符數(不包括終止空字符
'\0'
) - 失敗時- 負值
sprintf() 原型
cstdio 頭文件中定義的sprintf()
函數的原型是:
int sprintf(char* buffer, const char* format, ...);
格式說明符
format
參數printf()
可以包含格式說明符開始於%
.這些說明符被格式字符串後麵的各個變量的值替換。
格式說明符包含以下部分:
- 領先的
%
符號 flags
- 一個或多個修改轉換行為的標誌(可選)-
:左對齊字段內的結果。默認情況下它是右對齊的。+
:結果的符號附加到值的開頭,即使是正結果也是如此。- space: 如果沒有符號,則在結果的開頭附加一個空格。
#
:執行另一種轉換形式。0
:用於整數和浮點數。前導零用於填充數字而不是空格。
width
- 一個可選的*
或整數值,用於指定最小寬度字段。precision
- 一個可選字段,由.
後跟*
或整數或無以指定精度。length
- 一個可選的長度修飾符,用於指定參數的大小。specifier
- 轉換格式說明符。
sprintf() 格式說明符原型
sprintf()
格式說明符的一般原型是:
%[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 |
寫入定義指針的實現定義的字符序列 |
示例:C++ sprintf()
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
char buffer[100];
int count;
char name[] = "Max";
int age = 23;
// write combination of strings and variables to buffer variable
// store the number of characters written in count
count = sprintf(buffer, "Hi, I am %s and I am %d years old", name, age);
// print the string buffer
cout << buffer << endl;
// print the number of characters written
cout << "Number of characters written = " << count;
return 0;
}
輸出
Hi, I am Max and I am 23 years old Number of characters written = 34
相關用法
- C++ std::max()用法及代碼示例
- C++ std::string::push_back()用法及代碼示例
- C++ std::less_equal用法及代碼示例
- C++ set rbegin()用法及代碼示例
- C++ string::length()用法及代碼示例
- C++ set upper_bound()用法及代碼示例
- C++ set crbegin用法及代碼示例
- C++ std::is_member_object_pointer模板用法及代碼示例
- C++ std::copy_n()用法及代碼示例
- C++ std::string::insert()用法及代碼示例
- C++ std::is_sorted_until用法及代碼示例
- C++ std::iota用法及代碼示例
- C++ set size用法及代碼示例
- C++ std::numeric_limits::digits用法及代碼示例
- C++ sscanf()用法及代碼示例
- C++ std::string::data()用法及代碼示例
- C++ smatch max_size()用法及代碼示例
- C++ std::is_permutation用法及代碼示例
- C++ strchr()用法及代碼示例
- C++ set emplace用法及代碼示例
注:本文由純淨天空篩選整理自 C++ sprintf()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。