在本教程中,我们将借助示例了解 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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。