函数
<cwchar>

swprintf

int swprintf (wchar_t* ws, size_t len, const wchar_t* format, ...);
将格式化数据写入宽字符串
组合一个宽字符串,其文本与使用 formatwprintf 上打印的文本相同,但内容不会被打印,而是作为C 宽字符串存储在 ws 指向的缓冲区中。

如果结果宽字符串的长度超过 len-1 个字符,多余的字符将被丢弃,不被存储。

内容之后会自动追加一个终止空字符。

format 参数之后,函数期望至少有 format 所需的那么多额外参数。

这是 snprintf (<cstdio>) 的宽字符等价版本。

参数

ws
指向存储结果 C 宽字符串的缓冲区的指针。
该缓冲区的大小应至少为 n 个宽字符。
len
ws 缓冲区中填充的最大宽字符数。
生成的字符串长度最多为n-1,为额外的终止空宽字符留出空间。
size_t 是一个无符号整数类型。
format
C 宽字符串,包含一个格式字符串,其遵循与 printfformat 相同的规范(详情请参阅 printf)。
请注意,所有格式说明符的含义与 printf 中相同;因此,%lc应用于写入一个宽字符(而不是%c),同样%ls应用于宽字符串(而不是%s).
... (附加参数)
根据格式字符串,函数可能需要一系列附加参数,每个参数包含一个用于替换格式字符串中格式说明符的值(或者,对于n).
,是指向存储位置的指针)。这些参数的数量应至少与格式说明符中指定的值的数量一样多。额外的参数会被函数忽略。

返回值

成功时,返回写入的字符总数。此计数不包括在字符串末尾自动追加的空字符。
如果发生故障,则返回一个负数,包括当要写入 ws 的结果字符串长度超过 n 个字符时。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* swprintf example */
#include <stdio.h>
#include <wchar.h>

int main ()
{
  wchar_t buffer [100];
  int cx;

  cx = swprintf ( buffer, 100, L"The half of %d is %d", 80, 80/2 );

  swprintf ( buffer+cx, 100-cx-1, L", and the half of that is %d.", 80/2/2 );

  fputws ( buffer, stdout );

  return 0;
}

输出
The half of 80 is 40, and the half of that is 20.


另见