当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ sprintf()用法及代码示例


在本教程中,我们将借助示例了解 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 写入一个字符串
di 将有符号整数转换为十进制表示
o 将无符号整数转换为八进制表示
Xx 将无符号整数转换为十六进制表示
u 将无符号整数转换为十进制表示
Ff 将浮点数转换为十进制表示
Ee 将浮点数转换为十进制 index 表示法
Aa 将浮点数转换为十六进制 index
Gg 将浮点数转换为十进制或十进制 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++ sprintf()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。