swprintf
函数 <cwchar>
int swprintf (wchar_t* ws, size_t len, const wchar_t* format, ...);
将格式化的数据写入宽字符串
如果在
wprintf上使用format,将打印相同的文本,
但内容将作为C宽字符串存储在ws指向的缓冲区中,而不是打印。
如果得到的宽字符串长度超过len-1字符,则丢弃其余字符,不存储。
在内容之后会自动附加一个终止空字符。
在format形参之后,函数期望至少与format所需的参数一样多的附加参数。
这相当于
snprintf (<
cstdio>)的宽字符版本。
☲ 参数
ws
指向缓冲区的指针,生成的C宽字符串存储在这里。
缓冲区的大小应该至少为len个字符。
len
要填充ws缓冲区的最大宽字符数。
生成的字符串长度最多为len-1,为额外的结束空宽字符留下空间。
size_t是一个无符号整型。
format
C宽字符串,包含一个格式字符串,该格式字符串遵循与printf格式相同的规范
(有关详细信息,请参阅
printf)。
注意,所有格式说明符都具有与printf相同的含义;因此,
%lc用于写入宽字符(而不是%c),以及%ls用于宽字符串(而不是%s)。
... (附加参数)
根据格式字符串的不同,函数可能需要一系列附加参数,
每个参数都包含一个用于替换格式字符串中的格式说明符的值
(或者一个指向存储位置的指针,对应于len)。
这些参数的数量至少应该与格式说明符中指定的值的数量一样多。其他参数被函数忽略。
☉ 返回值
如果成功,则返回所写的字符总数。此计数不包括自动附加在字符串末尾的其他空字符。
如果失败(如写入ws的结果字符串超过len个字符),将返回一个负数.
☣ 示例
/* 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.
🍄 另请参阅