C++官网参考链接:https://cplusplus.com/reference/cwchar/swprintf/
函数
<cwchar>
swprintf
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中的format相同的规范(详细信息请参阅printf )。
注意,所有格式说明符的含义都与printf中的含义相同;因此,%lc应使用用于写宽字符(而不是%c),%ls应使用用于写宽字符串(而不是%s)。
...(附加实参)
根据format字符串的不同,函数可能需要一系列附加实参,每个实参包含一个值,用于替换format字符串中的格式说明符(对于n指向存储位置的指针)。
这些实参的数量至少应该与格式说明符中指定的值的数量相同。函数将忽略额外的实参。
返回值
如果成功,则返回写入的字符总数。此计数不包括自动附加在字符串末尾的额外空字符。
失败时返回负数,包括要写入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;
}
输出:
另请参考
snprintf Write formatted output to sized buffer (function)
wprintf Print formatted data to stdout (function)
swscanf Read formatted data from string (function)