C++ 中的vsprintf() 函数用于将格式化的字符串写入字符串缓冲区。
vsprintf()原型
int vsprintf( char* buffer, const char* format, va_list vlist );
vsprintf()
函数将 format 指向的字符串写入字符串缓冲区。字符串格式可能包含以 % 开头的格式说明符,这些说明符被作为列表 vlist
传递的变量的值替换。
它在<cstdio> 头文件中定义。
参数:
buffer
:指向要写入结果的字符串的指针。format
:指向写入文件流的空终止字符串的指针。它由字符以及以 % 开头的可选格式说明符组成。格式说明符被格式字符串后面的各个变量的值替换。
格式说明符包含以下部分:
- 前导 % 符号
Flags
: 可选的一个或多个标志,用于修改转换行为。- -:左对齐字段内的结果。默认情况下它是右对齐的。
- +:结果的符号附加到值的开头,即使是正面结果也是如此。
- 空格:如果没有符号,则在结果的开头附加一个空格。
- #:执行另一种形式的转换。
- 0:用于整数和浮点数。前导零用于填充数字而不是空格。
Width
:可选的 * 或整数值,用于指定最小宽度字段。Precision
:一个可选字段,由 .后跟 * 或整数或不指定精度。Length
:一个可选的长度修饰符,用于指定参数的大小。Specifier
: 转换格式说明符。可用的格式说明符如下:格式说明符 说明 % 印刷 % c 写入单个字符 s 写入一个字符串 d 或 i 将有符号整数转换为十进制表示 o 将无符号整数转换为八进制表示 X 或 x 将无符号整数转换为十六进制表示 u 将无符号整数转换为十进制表示 F 或 f 将浮点数转换为十进制表示 E 或 e 将浮点数转换为十进制 index 表示法 一个或一个 将浮点数转换为十六进制 index 克或克 将浮点数转换为十进制或十进制 index 表示法 n 返回到目前为止此函数调用写入的字符数。结果写入参数指向的值 p 编写定义指针的实现定义的字符序列。 所以格式说明符的一般格式是:
%[flags][width][.precision][length]specifier
vlist
:包含要写入的数据的参数列表。
返回:
如果成功,vsprintf()
函数会返回写入的字符数。失败时返回负值。
示例:vsprintf() 函数的工作原理
#include <cstdio>
#include <cstdarg>
void write(char* buf, const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
}
int main ()
{
char buffer[100];
char fname[20] = "Bjarne";
char lname[20] = "Stroustrup";
char lang[5] = "C++";
write(buffer, "%s was created by %s %s\n", lang, fname, lname);
printf("%s", buffer);
return 0;
}
运行程序时,输出将是:
C++ was created by Bjarne Stroustrup
相关用法
- C++ vscanf()用法及代码示例
- C++ vswscanf()用法及代码示例
- C++ vsscanf()用法及代码示例
- C++ vswprintf()用法及代码示例
- C++ vsnprintf()用法及代码示例
- C++ valarray cos用法及代码示例
- C++ valarray abs用法及代码示例
- C++ vector data()用法及代码示例
- C++ vector::max_size()用法及代码示例
- C++ vector::rbegin()用法及代码示例
- C++ vector rbegin()、rend()用法及代码示例
- C++ valarray cshift用法及代码示例
- C++ valarray resize用法及代码示例
- C++ valarray pow()用法及代码示例
- C++ valarray exp()用法及代码示例
- C++ valarray log10用法及代码示例
- C++ vector::pop_back()用法及代码示例
- C++ valarray sinh用法及代码示例
- C++ valarray cos()用法及代码示例
- C++ vwscanf()用法及代码示例
注:本文由纯净天空筛选整理自 C++ vsprintf()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。